
No.1ベストアンサー
- 回答日時:
横に展開する最大数を固定する必要があるけど・・
select 製品コード,max(decode(r,1,取扱店)) 店1,max(decode(r,2,取扱店)) 店2,max(decode(r,3,取扱店)) 店3
from (select x.*,row_number() over(partition by 製品コード order by 取扱店) r from TARGET x)
group by 製品コード
;
な感じ。
この回答への補足
おはようございます。早速のご回答ありがとうございます☆
重ねて質問なのですが、max(decode(r,・・))とは、
rの重複を避ける意味でmax関数を使用しているのですか?
「max(decode」で検索したところ、同じ処理SQLが複数件あったの
ですが、max関数については説明されていませんでした。
ご回答よろしくお願い致します!
No.3
- 回答日時:
追加の質問の意味が理解できませんが・・
製品コード 取扱店 その他の項目
001 あああ アアア
001 いいい イ
001 ううう ウ
を
製品コード 店1 店2 店3 その他の項目
001 あああ いいい ううう ○○○
にしたいのでしょうか?
集約した検索結果に、いずれか1つのレコードから情報を付加したいのであれば、
そのレコードを選択する基準さえはっきりすれば、1つのSQLで結合なしに
答えを出すことは可能かと思います。
(どのレコードでも良いというのも基準の一つですけど・・)
ただ、今回のSQLは、クロス集計というより横展開しているだけの処理なので、
初めから、アプリケーション側で横展開すれば良いだけの話です、オラクルで横展開する合理性は感じません。
>どちらが良いと思われますか?
(3)アプリケーションで集約する。
(4)1つのSQLで完全な横展開結果と導き出す。
いずれかを選択します。(私なら)
この回答への補足
こんにちは。
質問が曖昧で、申し訳ありませんでしたm(_ _)m
製品コード 製品名 製造工場 取扱店
001 製品A 工場A あああ
001 製品A 工場A いいい
001 製品A 工場A ううう
※結合して、
製品コード・製品名は製品テーブルから、
製造工場は工場テーブルから、
取扱店は卸売テーブルから取得しているとします。
を
製品コード 製品名 製造工場 店1 店2 店3
001 製品A 工場A あああ いいい ううう
と取得したいのですが、
教えて頂いたSQLでは、
製品コードでグルーピングしているので、製品名、製造工場が
GRUOP-BYエラーに引っかかってしまうので、
(1)製品コードと取扱店を横展開して取得するSQLと、
製品コードと製品名と製造工場を取得するSQLをFROM句で結合し、製品コードをキーに結果を出す。
(2)製品コードと取扱店を横展開して取得するSQLと、
製品コードと製品名と製造工場を取得するSQLを
別発行し、Javaで製品コードをキーにして、1レコードにまとめる。
という意味でした。
今のところ、(1)のやり方で行っております。
そこで、パフォーマンス上、どちらが良いでしょうか?
ちなみに今回は、(1)ではビューとして作成しています。
ご回答お願い致します。
No.2
- 回答日時:
GROUP-BYのキー項目以外は、集計関数を使わないとエラーになります。
なので、max関数やmin関数を便宜上使いエラーを回避します。
decode(r,~)が取りうる値は、r番目の値かnullですので、nullは葬られ、
r番目の値が採用されます。
この回答への補足
こんにちは。ご回答ありがとうございます☆
GROUP-BYに指定していないカラムをSELECT句に記述していたので、
エラーが出ていましたが、取り除いたところ取得できました!
ありがとうございます♪
ところで、今、JavaとOracleを使用して開発をしておりますが、
上記のSELECT句に記述していたカラムも取得しなければなりません。
そこで、
(1)GROUP-BY指定SQLとGROUP-BYなしSQLを2回発行して、
Javaで製品CDをキーにして1レコードに結合する。
(2)GROUP-BY指定SQLとGROUP-BYなしSQLをそれぞれビューとして
作成し、製品CDをキーにして結合する。
どちらが良いと思われますか?
ご存知でしたら、ご回答お願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Visual Basic(VBA) データを製品別に集計 3 2022/09/11 21:17
- 専門店・ホームセンター 店頭で売る商品の選定がしっかりされていて、不良品販売が少ないホームセンターは? 2 2022/10/16 16:30
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- その他(買い物・ショッピング) JANコードの登録について 1 2022/07/23 14:19
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
- その他(ビジネス・キャリア) スポット取引とは? 1 2023/04/06 15:23
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- その他(データベース) accessについて 2 2022/05/31 16:58
- その他(Microsoft Office) EXCEL VLOOKUPに関する質問 5 2023/02/08 11:38
このQ&Aを見た人はこんなQ&Aも見ています
-
複数行を1行にするSQL
Oracle
-
検索対象のデータが「複数レコード」を「1レコード」として獲得するSQL
Oracle
-
アクセスで複数のレコード情報を1レコードにまとめる方法
Access(アクセス)
-
-
4
SELECTの結果で同一行を複数回出力する
Oracle
-
5
oracle 複数列を1列にまとめる
Oracle
-
6
Viewにインデックスは張れますか?
Oracle
-
7
1つのテーブルに同じデータを参照する複数の列がある場合…
SQL Server
-
8
単一グループのグループ関数ではありません。
Oracle
-
9
複数レコードを横並び1レコードで抽出する方法
Oracle
-
10
アクセスで複数レコードを1レコードにできますか?
その他(ソフトウェア)
-
11
テーブル名をカラムとして取得する方法
Oracle
-
12
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
-
13
ACCESSのテーブル複数行を1行にしてエクスポートは?
Access(アクセス)
-
14
ORA-01843: 指定した月が無効です。エラー
Oracle
-
15
オラクルのUPDATEで複数テーブル
Oracle
-
16
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
17
CASE文のエラーについて
Oracle
-
18
selectの単純繰り返し
Oracle
-
19
はじめまして!
Oracle
-
20
複数のレコードを1つのレコードにまとめる方法
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IDENTITY列の番号リセット
-
キーが同じを複数行を1行にま...
-
Oracleでの文字列連結サイズの上限
-
GROUP BYを行った後に結合した...
-
iserease のDB2 UDBに対してODB...
-
Accessで別テーブルの値をフォ...
-
access2003で学籍番号から生徒...
-
OracleのSQL*PLUSで、デー...
-
DataGridViewの、選択されてい...
-
クライアントからのDBアクセス
-
Date型にNULLをセットしたい V...
-
MERGE文を単体テーブルに対して...
-
実績累計の求め方と意味を教え...
-
同じ表内の比較
-
最新の日付とその金額をクエリ...
-
ACCESSで大量の更新を行うと「...
-
日付データの抽出方法を教えて...
-
ACCESS2000 コンボボックス絞込み
-
select句副問い合わせ 値の個...
-
VBScript(WSH)でのランダムア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
キーが同じを複数行を1行にま...
-
"カレントレコードがありません...
-
改行コード
-
新しい日付のデータ副問い合わせ
-
accessからexcelへのエクスポー...
-
Access2007 Mid関数
-
GROUP BYを行った後に結合した...
-
Oracleでの文字列連結サイズの上限
-
OracleのSQL*PLUSで、デー...
-
SELECTで1件のみ取得するには?
-
select句副問い合わせ 値の個...
-
select insertで複数テーブルか...
-
DataGridViewの、選択されてい...
-
Excelでセルの書式設定を使用し...
-
実績累計の求め方と意味を教え...
-
SELECTの結果で同一行を複数回...
-
Accessで別テーブルの値をフォ...
-
カレントレコードが無い事を判...
-
レコードが存在しなかった場合
-
Excelで、改行がある場合の条件...
おすすめ情報