- 締切済み
SQL Serverで、四半期刻みの年間売上数取得
システム開発の仕事を行っています。 SQL Server(2008?)で、 20154期実績:20151期~20154期の売上数 20161期実績:20152期~20161期の売上数 20162期実績:20153期~20162期の売上数 20163期実績:20151期~20154期の売上数 というように、四半期刻みで1年間の担当者別売り上げ数が取りたいのですが、 良い方法が思い浮かびません。 ほげテーブル 年月度 名前 売上数 -------------------------------------- 20151期 佐藤 2 20152期 佐藤 1 20153期 佐藤 1 20154期 佐藤 1 20161期 佐藤 2 20162期 佐藤 3 20151期 山田 1 20152期 山田 2 20153期 山田 1 ほしい結果 20154期 佐藤 5個 20154期 山田 4個 20161期 佐藤 5個 20161期 山田 3個 20162期 佐藤 7個 20162期 山田 1個 ↑こんなふうにデータを取得したい Where句で期間の条件を固定にし、 UNIONを使って繋げていけば取れなくも無いですが、 実際のデータは2000年1月~現在まであるので クエリの長さ的にもレスポンス的にもよろしくないかと。。 出来る限り簡潔なクエリで 「四半期ごとに過去1年間分の実績」を取得するやりかたは無いものでしょうか。 ご教授いただけたら幸いです。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- haseryuu0378
- ベストアンサー率100% (1/1)
これでどうでしょうか。 declare @hoge table(年月度 int,名前 nvarchar(max),売上数 int) insert @hoge values (20151,'佐藤',2) ,(20152,'佐藤',1) ,(20153,'佐藤',1) ,(20154,'佐藤',1) ,(20161,'佐藤',2) ,(20162,'佐藤',3) ,(20151,'山田',1) ,(20152,'山田',2) ,(20153,'山田',1) select 年月度,名前, (select cast(SUM(売上数)as nvarchar) from @hoge as sub where sub.年月度 between main.年月度 - case right(main.年月度,1) when 4 then 3 else 9 end and main.年月度 and main.名前 = sub.名前 ) + '個' as 売上数 from (select distinct 年月度,名前 from @hoge ) as main