如何使不具有共同GROUP BY条件的值变为SUM?

时间:2018-02-01 02:24:10

标签: sql sql-server

我有一张这样的表:

enter image description here

我想要做的是得到每次迭代的总和,所以我的结果集最终会如此:

enter image description here

请注意,迭代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,但我不确定这是否是要采取的路线。

1 个答案:

答案 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;