いつもお世話になっています。
とりあえず解らないなりに下記のサイトを見て月別年度の横集計は出来ました。
http://www.dbsheetclient.jp/blog/?p=620
sql
1select 2 A.得意先コード 3,ms.得意先名1 4, SUM(CASE SUBSTRING(A.売上見出日付,5,2) WHEN '04' THEN A.伝票合計売上金額 ELSE 0 END) AS "4月" 5, SUM(CASE SUBSTRING(A.売上見出日付,5,2) WHEN '05' THEN A.伝票合計売上金額 ELSE 0 END) AS "5月" 6, SUM(CASE SUBSTRING(A.売上見出日付,5,2) WHEN '06' THEN A.伝票合計売上金額 ELSE 0 END) AS "6月" 7, SUM(CASE SUBSTRING(A.売上見出日付,5,2) WHEN '07' THEN A.伝票合計売上金額 ELSE 0 END) AS "7月" 8, SUM(CASE SUBSTRING(A.売上見出日付,5,2) WHEN '08' THEN A.伝票合計売上金額 ELSE 0 END) AS "8月" 9, SUM(CASE SUBSTRING(A.売上見出日付,5,2) WHEN '09' THEN A.伝票合計売上金額 ELSE 0 END) AS "9月" 10, SUM(CASE SUBSTRING(A.売上見出日付,5,2) WHEN '10' THEN A.伝票合計売上金額 ELSE 0 END) AS "10月" 11, SUM(CASE SUBSTRING(A.売上見出日付,5,2) WHEN '11' THEN A.伝票合計売上金額 ELSE 0 END) AS "11月" 12, SUM(CASE SUBSTRING(A.売上見出日付,5,2) WHEN '12' THEN A.伝票合計売上金額 ELSE 0 END) AS "12月" 13, SUM(CASE SUBSTRING(A.売上見出日付,5,2) WHEN '01' THEN A.伝票合計売上金額 ELSE 0 END) AS "1月" 14, SUM(CASE SUBSTRING(A.売上見出日付,5,2) WHEN '02' THEN A.伝票合計売上金額 ELSE 0 END) AS "2月" 15, SUM(CASE SUBSTRING(A.売上見出日付,5,2) WHEN '03' THEN A.伝票合計売上金額 ELSE 0 END) AS "3月" 16 from[販売].[dbo].[売上見出トラン] A 17 18 inner join [販売].[dbo].[得意先マスタ]ms 19 on A.得意先コード =ms.得意先コード 20 inner join [販売].[dbo].[得意先分類1マスタ] B1 21 on ms.得意先分類1コード = B1.得意先分類1コード 22 inner join [販売].[dbo].[得意先分類2マスタ] B2 23 on ms.得意先分類2コード = B2.得意先分類2コード 24 25 JOIN [販売].[dbo].[年度] B ON SUBSTRING(A.売上見出日付,1,6) = B.年月 26 WHERE B.年度 = '2015' 27 and B1.得意先分類1コード is not null 28 and ms.得意先分類2コード is not null 29 and ms.得意先分類1コード = '01' 30 and ms.得意先分類2コード = '01' 31 GROUP BY A.得意先コード,ms.得意先名1 32 ORDER BY A.得意先コード 33
ここから更に発展で前年度の月別対比を集計するにはどのようにしてすればよいのでしょうか?
色々と検索してみましたが当方がわかる内容がヒットしなかったので質問させていただきます。
イメージとしては下記のような表組みをイメージしております。
4月5月6月7月8月9月10月11月12月1月2月3月
得意先名 2014年度
2015年度
得意先名 2014年度
2015年度
得意先名 2014年度
2015年度
下記のようにすれば出せないことも無いのですが・・・
もっとスマートなやり方を知りたいです。
sql
1, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '201501' THEN A.伝票合計売上金額 ELSE 0 END) AS "前年1月" 2, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '201601' THEN A.伝票合計売上金額 ELSE 0 END) AS "今年1月" 3, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '201502' THEN A.伝票合計売上金額 ELSE 0 END) AS "前年2月" 4, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '201602' THEN A.伝票合計売上金額 ELSE 0 END) AS "今年2月" 5, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '201503' THEN A.伝票合計売上金額 ELSE 0 END) AS "前年3月" 6, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '201603' THEN A.伝票合計売上金額 ELSE 0 END) AS "今年3月" 7, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '201504' THEN A.伝票合計売上金額 ELSE 0 END) AS "前年4月" 8, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '201604' THEN A.伝票合計売上金額 ELSE 0 END) AS "今年4月" 9, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '201505' THEN A.伝票合計売上金額 ELSE 0 END) AS "前年5月" 10, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '201605' THEN A.伝票合計売上金額 ELSE 0 END) AS "今年5月" 11, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '201506' THEN A.伝票合計売上金額 ELSE 0 END) AS "前年6月" 12, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '201606' THEN A.伝票合計売上金額 ELSE 0 END) AS "今年6月" 13, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '201507' THEN A.伝票合計売上金額 ELSE 0 END) AS "前年7月" 14, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '201607' THEN A.伝票合計売上金額 ELSE 0 END) AS "今年7月" 15, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '201508' THEN A.伝票合計売上金額 ELSE 0 END) AS "前年8月" 16, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '201608' THEN A.伝票合計売上金額 ELSE 0 END) AS "今年8月" 17, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '201509' THEN A.伝票合計売上金額 ELSE 0 END) AS "前年9月" 18, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '201609' THEN A.伝票合計売上金額 ELSE 0 END) AS "今年9月" 19, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '2015010' THEN A.伝票合計売上金額 ELSE 0 END) AS "前年10月" 20, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '2016010' THEN A.伝票合計売上金額 ELSE 0 END) AS "今年10月" 21, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '2015011' THEN A.伝票合計売上金額 ELSE 0 END) AS "前年11月" 22, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '2016011' THEN A.伝票合計売上金額 ELSE 0 END) AS "今年11月" 23, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '2015012' THEN A.伝票合計売上金額 ELSE 0 END) AS "前年12月" 24, SUM(CASE SUBSTRING(A.売上見出日付,1,6) WHEN '2016012' THEN A.伝票合計売上金額 ELSE 0 END) AS "今年12月"

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/28 06:12
2016/05/28 07:03 編集
2016/05/28 08:34
2016/05/28 09:13 編集
2016/05/28 09:24
2016/05/28 10:45 編集
2016/05/30 03:24 編集