SQL Server 2008 R2
示例数据:
ownership exact_opening_date
Type1 3/1/2002
Type1 1/4/2004
Owned 3/1/2002
Owned 3/31/2003
Owned 6/30/2004
我希望按照所有权类型获得按年份计算的运行总额,但即使当年没有值,也要保持运行总计:
ownership open_date run_total
Type 1 2002 1
Type 1 2003 1 <-- here's my trouble
Type 1 2004 2
我可以获得总计,但我不确定如何在当年实际上没有值时包含该总计。
这就是我现在正在做的事情:
WITH cte (
ownership
,open_date
,ct
)
AS (
SELECT ownership
,year(exact_opening_date) AS open_date
,count(*) AS ct
FROM studio_master
GROUP BY ownership
,year(exact_opening_date)
)
SELECT d1.ownership
,d1.open_date
,sum(d2.ct) AS run_total
FROM cte d1
LEFT JOIN cte d2 ON d1.open_date >= d2.open_date
AND d1.ownership = d2.ownership
GROUP BY d1.ownership
,d1.open_date
,d1.ct
ORDER BY d1.ownership
,d1.open_date
如何让那些“失踪”的人在那里跑完全年?
答案 0 :(得分:4)
您可以使用年份列表加入。
您可以使用&#34; Itzik的交叉连接CTE方法&#34;从这个问题的应答答案作为年度列表的来源:SQL, Auxiliary table of numbers