鉴于表格:
id date count cumulative_sum
1 2 100
2 1 50
3 1 10
4 2 5
如何更新cumulative_sum
,date
订购的行的id
?
结果应为:
id date count cumulative_sum
2 1 50 50
3 1 10 60
1 2 100 160
4 2 5 165
是否也可以仅更新插入或更新行时需要重新计算的行?
答案 0 :(得分:1)
你可以用这个:
update your_table
set
cumulative_sum = (select sum(c)
from your_table t2
where
t2.date<your_table.date
or (t2.date=your_table.date
and t2.id<=your_table.id));
子查询计算计数的累积总和,它是日期<&lt;的所有值的总和。比当前行的日期,或者date =当前行的日期,id是&lt;。
你也可以提出这个条件:
where cumulative_sum is null
只有在没有值的情况下才会更新行。如果表中插入的所有ID和日期始终按升序排列,则此方法有效。
答案 1 :(得分:0)
首先按所需顺序对表格进行排序,然后使用下面的查询将其放入#temp
Declare @count int=0
UPdate #temp Set @count = cumulative_sum = count + @count
答案 2 :(得分:-1)
对ORDER BY
列使用date
功能。
SELECT * FROM yourTableName ORDER BY date