以下を照会するより短い方法があるかもしれないと感じています。
この構造は、複数のストアド プロシージャで繰り返されます。
テーブルのターゲット要素と DimDate ビューのCROSS JOIN
間で、メジャーごとに 0 を指定します。次にUNION
、実際の結果を含む結果。次に、外側のクエリで、重複の場合にすべてが集計されます。
これについてもっと効率的な方法はありますか?
SELECT Name,
DateKey,
Measure1 = SUM(Measure1),
Measure2 = SUM(Measure2)
FROM (
SELECT Name,
DateKey,
Measure1 = SUM(Measure1),
Measure2 = SUM(Measure2)
FROM WH.dbo.tb_r12028dxi_Data
GROUP BY SearchName,
DateKey
UNION
SELECT Name,
d.DateKey,
0,
0
FROM WH.dbo.vw_DimDate d
CROSS JOIN
WH.dbo.tb_r12028dxi_Data a
WHERE d.DayMarker >= CONVERT(DATETIME,CONVERT(CHAR(6),DATEADD(MM,-24,GETDATE()),112) + '01',112)
GROUP BY a.Name,
d.DateKey
) x
GROUP BY Name,
DateKey