
こんにちは
【テーブル概要】
テーブルA(会員番号テーブル)
・会員番号(PK)
テーブルB(買い物情報テーブル)
・会員番号(PK)
・買い物月(PK)
・商品番号(PK)
・請求金額
【したいこと】
上記のようなテーブルがあった場合に、以下のような出力を行いたいと思っています。
会員番号,商品番号,買い物月(7月)の請求金額,買い物月(8月)の請求金額,買い物月(9月)の請求金額
--------,--------,-----------------------,-----------------------,-----------------------
会員1 ,商品1 , 500, , 100
会員1 ,商品2 , , 300, 100
会員2 ,商品1 , 1500, 100, 100
会員3 ,商品3 , , , 100
会員3 ,商品4 , , 200,
【試したこと】
一度、テーブルBを買い物月単位に割ってみました。
テーブルB_買い物月(7月)
・会員番号(PK)
・商品番号(PK)
・請求金額
テーブルB_買い物月(8月)
・会員番号(PK)
・商品番号(PK)
・請求金額
テーブルB_買い物月(9月)
・会員番号(PK)
・商品番号(PK)
・請求金額
それからINNER JOINで繋いでいけば、できるかと思ったのですが
実際の買い物月は結構過去まであり(2003年くらい)、ありえない程深いネストになってしまいます。。
どなたかお知恵をお貸し願います。
No.1ベストアンサー
- 回答日時:
縦横変換の典型ですね。
サンプルを提示しますので、加工してください。
SELECT
会員番号,
商品番号,
'2008年' AS 年度,
SUM(CASE WHEN 買い物月 = 200801 THEN NVL(請求金額,0) END) 請求金額01月,
SUM(CASE WHEN 買い物月 = 200802 THEN NVL(請求金額,0) END) 請求金額02月,
SUM(CASE WHEN 買い物月 = 200803 THEN NVL(請求金額,0) END) 請求金額03月,
SUM(CASE WHEN 買い物月 = 200804 THEN NVL(請求金額,0) END) 請求金額04月,
SUM(CASE WHEN 買い物月 = 200805 THEN NVL(請求金額,0) END) 請求金額05月,
SUM(CASE WHEN 買い物月 = 200806 THEN NVL(請求金額,0) END) 請求金額06月,
SUM(CASE WHEN 買い物月 = 200807 THEN NVL(請求金額,0) END) 請求金額07月,
SUM(CASE WHEN 買い物月 = 200808 THEN NVL(請求金額,0) END) 請求金額08月,
SUM(CASE WHEN 買い物月 = 200809 THEN NVL(請求金額,0) END) 請求金額09月,
SUM(CASE WHEN 買い物月 = 200810 THEN NVL(請求金額,0) END) 請求金額10月,
SUM(CASE WHEN 買い物月 = 200811 THEN NVL(請求金額,0) END) 請求金額11月,
SUM(CASE WHEN 買い物月 = 200812 THEN NVL(請求金額,0) END) 請求金額12月
FROM テーブルB
where 買い物月 between 200801 and 200812
GROUP BY
会員番号,
商品番号;
ポイント
・CASEで該当するデータを横展開する。
・Group Byで横展開した値を集計し1列に集約する。
応用
・各カラムのデータ型にあわせてSQLを変更する。
※date型、number型、char型。
・上記は2008年に限定しているので、実際に欲しい形に変更する。
※年を意識しない作りにするなど。
回答の通りで出来ました!
なるほど、一度斜めに出してgroup byするのですか。。
勉強になりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
家庭で奥様が家計管理してるご...
-
クレジットカードの請求漏れに...
-
ワードの差込印刷で金額にコン...
-
JCBカードに不明な請求項目があ...
-
クレジットカードについて
-
クレジットカード請求
-
クレジットカードの利用明細に ...
-
クレジットカードの誤請求をカ...
-
エネオスカードの利用金額の反...
-
クレジットカード不正利用の被...
-
Googleplayにカード登録をした...
-
auのカードの年会費いつから必...
-
カード支払いについてなのです...
-
本人確認書類で本籍地を消して...
-
楽天カード 速報版カード利用の...
-
楽天クレカの請求が来なくなり...
-
過払い金取り戻したら、その後...
-
クレジットカードの明細に下記...
-
「弁済金」とは「支払額」と同...
-
クレジットカード会社から身に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クレジットカードの誤請求をカ...
-
JCBカードに不明な請求項目があ...
-
過払い金取り戻したら、その後...
-
UCSクレジットードの利用可能額...
-
カード支払いについてなのです...
-
教えてください(∋_∈) クレジッ...
-
エネオスカードの利用金額の反...
-
ワードの差込印刷で金額にコン...
-
セゾンカード ポータルの見方に...
-
楽天カード支払い
-
クレジットカード請求
-
BILL ITUNES COMからの請求。 ...
-
記憶のない請求について
-
クレジットカード不正利用の被...
-
クレジットカードの利用明細に ...
-
楽天カード 速報版カード利用の...
-
Googleplayにカード登録をした...
-
クレジットカードの明細に下記...
-
本人確認書類で本籍地を消して...
-
クレジットカードのご利用残高...
おすすめ情報