Sql 如何对没有公共分组条件的值求和?

Sql 如何对没有公共分组条件的值求和?,sql,sql-server,Sql,Sql Server,我有一张这样的桌子: 我想做的是得到每次迭代的总和,所以我的结果集最终会是这样的: 请注意,itemnum2、8、10和11对于迭代1不存在,但是它们仍然应该被考虑。该表只存储每次迭代时所做的更新,因此由于项目2、8、10和11没有更新,因此它们没有迭代1记录。这就是我被难倒的地方 以下是我目前的疑问: SELECT Iteration, SUM(Value) FROM TableA GROUP BY Iteration 很明显,这只是对每个迭代的总结,但第2、8、10和11项并没有总结到迭代

我有一张这样的桌子:

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

请注意,itemnum2、8、10和11对于迭代1不存在,但是它们仍然应该被考虑。该表只存储每次迭代时所做的更新,因此由于项目2、8、10和11没有更新,因此它们没有迭代1记录。这就是我被难倒的地方

以下是我目前的疑问:

SELECT Iteration, SUM(Value)
FROM TableA
GROUP BY Iteration

很明显,这只是对每个迭代的总结,但第2、8、10和11项并没有总结到迭代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; 

试试这个。选择Iteration,SUMValue FROM TableA GROUP BY Iteration让我知道是否工作。缺少的值是否来自不同的迭代?@GordonLinoff是的can@GaurangDave我已经试过了。这样做并不能解释迭代1中缺少的值。你能解释一下迭代1是如何得到12.5的吗?