我有一张这样的表:
我想要做的是得到每次迭代的总和,所以我的结果集最终会如此:
请注意,迭代1不存在ItemNum 2,8,10和11,但仍应考虑它们。该表仅存储对每个迭代进行的更新,因此,由于第2,第8,第10和第11项未更新,因此它们没有迭代1记录。这是我难倒的地方。
到目前为止,这是我的查询:
SELECT Iteration, SUM(Value)
FROM TableA
GROUP BY Iteration
这显然只是总结了每次迭代,但是第2,第8,第10和第11项并没有被总结为迭代1.有人可以帮我指出正确的方向吗?我已经调查了CROSS APPLY
,但我不确定这是否是要采取的路线。
答案 0 :(得分:1)
您可以获取缺失值,但这很棘手:
select it.iteration, sum(t.value)
from (select distinct iteration from t) it cross join
(select distinct itemnum from t) i outer apply
(select top (1) t.value
from t
where t.iteration <= it.iteration and t.itemnum = i.itemnum
order by t.iteration desc
) t
group by it.iteration;