更新按两列排序的累积和



给定表:

id   date count cumulative_sum
1    2    100                  
2    1    50
3    1    10
4    2    5

如何更新date, id排序的cumulative_sum

结果应该是:

id   date count cumulative_sum
2    1    50    50
3    1    10    60
1    2    100   160
4    2    5     165

当我插入或更新一行时,是否也可以只更新那些需要重新计算的行?

你可以这样写:

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为<</p>

你也可以这样写:

where cumulative_sum is null

仅在没有值时更新行。如果表中插入的所有id和日期始终以升序排列,则此操作将有效。

首先按所需的顺序对表进行排序,然后使用下面的查询将其放入#temp

Declare @count int=0
UPdate #temp Set @count = cumulative_sum =  count + @count

date列使用ORDER BY函数。

SELECT * FROM yourTableName ORDER BY date

相关内容

  • 没有找到相关文章

最新更新