- PR -

DB2:テーブルの集計

1
投稿者投稿内容
saber21jp
会議室デビュー日: 2006/01/16
投稿数: 2
お住まい・勤務地: 東京都
投稿日時: 2006-01-16 15:06
テーブルからグループ別に月間販売額合計と年間販売額合計を求めたいのですが、
どうも上手くSQL文を書くことができません。
ご教授よろしくお願いします。

<データテーブル>
ID 販売日 販売額
----------------------
10 20050101 1,000
10 20050102 100
10 20050105 200


10 20050331 600
20 20050102 2,000
20 20050103 1,500
20 20050105 500


20 20050331 600
30 20050101 600
30 20050102 700
30 20050103 1,000


30 20050331 500

<3月を指定した場合の結果>
ID  月合計 期間合計
----------------------
10 35,000 123,500
20 11,500 43,000
30 61,000 152,400

月合計は3月の合計です。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-01-16 17:30
GROUP BY、HAVINGでいけないかな。
ミソジマエ
常連さん
会議室デビュー日: 2005/09/25
投稿数: 43
投稿日時: 2006-01-16 18:36
月間の集計を求める方法がわからないのでしょうか?
年間の集計を求める方法がわからないのでしょうか?
月間、年間の集計がわかるのであれば、求めた月間、年間の集計をIDで結合すればいけそうですね。
ただ、年間にはあるけど月間には無いIDがあるのであれば外部結合を調べてみてください。

もっといい方法がありそうですが。
明智重蔵
大ベテラン
会議室デビュー日: 2005/09/05
投稿数: 127
投稿日時: 2006-01-17 09:21
case式を使えばいいような気がします

参考サイト
http://oraclesqlpuzzle.hp.infoseek.co.jp/7-21.html
saber21jp
会議室デビュー日: 2006/01/16
投稿数: 2
お住まい・勤務地: 東京都
投稿日時: 2006-01-17 09:48
すごい CASE式を使うとできるのですね。
月集計、年集計をそれぞれ求めることはできるのですが
月と年の集計を一度に求める方法がわかりませんでした。

SELECT ID ,
SUM(CASE MONTH(販売日) WHEN 03 THEN 販売額 END) AS '月合計',
SUM(CASE YEAR(販売日) WHEN 2005 THEN 販売額 END) AS '期間合計
FROM データテーブル
WHERE YEAR(販売日)=2005 AND MONTH(販売日)<=03
GROUP BY ID
ORDER BY ID

上のSQL文で求めることができました。ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)