MS SQL Server サンプルデータの WideWorldImportersDW スキーマを使って T-SQL を覚えるメモ。
Fact.Sale と Dimension.Date を使ってから月間受注の昨対比を抽出するクエリ
DECLARE @end_date date; SELECT @end_date = EOMONTH('2014-12-01'); with t1 as ( SELECT s.[Invoice Date Key] as sale_date, d.[Calendar Month Number] as sale_month, d.[Calendar Year] as sale_year, sum(s.[Total Including Tax]) as total_sale FROM [WideWorldImportersDW].[Fact].[Sale] as s inner join [Dimension].[Date] as d on s.[Invoice Date Key] = d.[Date] where s.[Invoice Date Key] between '2013-01-01' and @end_date group by s.[Invoice Date Key], d.[Calendar Month Number], d.[Calendar Year] ) select t1.[sale_month], sum( case t1.[sale_year] when 2013 then t1.[total_sale] end ) as sale_2013, sum( case t1.[sale_year] when 2014 then t1.[total_sale] end ) as sale_2014, 100.0 * sum( case t1.[sale_year] when 2014 then t1.[total_sale] end ) / sum( case t1.[sale_year] when 2013 then t1.[total_sale] end ) as yoy from t1 group by t1.[sale_month] order by t1.[sale_month];
結果はこうなる。
yoy は Year-over-Year の事。つまり昨年対比。
PowerBI で表示するとこうなる。
参考図書
ビッグデータ分析・活用のためのSQLレシピ
SQL Server 2016の教科書 開発編