我觉得可能有一种更短的方式来查询以下内容。
这种结构在几个存储过程中重复出现。
我CROSS JOIN
在表格的目标元素和 DimDate 视图之间执行一个 - 每个度量都为 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