![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
こんにちは
【テーブル概要】
テーブル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で質問しましょう!
似たような質問が見つかりました
- Oracle update文で質問です。 下記の条件でupdateをしたいですが、どのようにしたら良いでしょうか。 2 2022/06/23 10:51
- その他(資産運用・投資) トレードスクールについて質問です。 ロンナル・フォレックス株式会社 第一種金融商品取引業 四国財務局 3 2023/07/24 16:01
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
- Amazon Amazonの返金について。 間違って商品を買ってしまったのでキャンセルをし、返金のお手続きが完了し 2 2023/08/21 22:01
- クーポン・割引券 デパートなどで、商品券、毎月のデパートの友の会の金券を利用して買い物するとき、例えば1万円の商品に対 3 2022/03/31 13:09
- Amazon Amazonの支払い、セブンイレブンの場合はバーコードを出すか支払い番号を口頭で知らせるそうですね。 1 2022/04/08 17:09
- その他(ネットショッピング・通販・ECサイト) 11月1日に中国サイトで品物を購入しました私は何度もメールしていて4日に発送するとメールがあり5日の 6 2022/11/08 10:24
- 迷惑メール・スパム 【JP POST】よりのショートメール 6 2023/04/22 16:03
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- 電気・ガス・水道 ★現在の市場の値上げの原因は何によるものなのでしょう? 4 2023/02/10 17:54
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ワードの差込印刷で金額にコン...
-
毎月の請求
-
記憶のない請求について
-
楽天カードでガソリン入れたの...
-
毎月のクレジットカードの利用...
-
エネオスカードの利用金額の反...
-
クレジットカードの誤請求をカ...
-
クレジットカード会社から身に...
-
クレジットカードのご利用残高...
-
ウーバーイーツで前の住所から...
-
bill と invoice の違い
-
楽天カード 速報版カード利用の...
-
クレジットカード不正利用の被...
-
「弁済金」とは「支払額」と同...
-
JCBカードに不明な請求項目があ...
-
クレジットカードの請求漏れに...
-
いつ月払いでしょうか?
-
クレジットカードの支払いの、...
-
VISAカードのESTAFEE.COM利用国...
-
クレジットカード2重に引かれ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
記憶のない請求について
-
楽天カードでガソリン入れたの...
-
クレジットカード請求
-
ワードの差込印刷で金額にコン...
-
エネオスカードの利用金額の反...
-
「弁済金」とは「支払額」と同...
-
毎月の請求
-
クレジットカード不正利用あり...
-
クレジットカードの利用明細に ...
-
クレジットカードの明細に下記...
-
クレジットカードの誤請求をカ...
-
クレジットカード不正利用の被...
-
BILL ITUNES COMからの請求。 ...
-
bill と invoice の違い
-
楽天カード 速報版カード利用の...
-
カード支払いについてなのです...
-
毎月のクレジットカードの利用...
-
本人確認書類で本籍地を消して...
-
JCBカードに不明な請求項目があ...
-
au PAYのあらかじめリボ とは、...
おすすめ情報