为了账号安全,请及时绑定邮箱和手机立即绑定

计算SQL Server中的运行总计

计算SQL Server中的运行总计

烙印99 2019-05-27 11:02:24
想象一下下表(称为TestTable):id     somedate    somevalue--     --------    ---------45     01/Jan/09   323     08/Jan/09   512     02/Feb/09   077     14/Feb/09   739     20/Feb/09   3433     02/Mar/09   6我想要一个以日期顺序返回运行总计的查询,例如:id     somedate    somevalue  runningtotal--     --------    ---------  ------------45     01/Jan/09   3          323     08/Jan/09   5          812     02/Feb/09   0          877     14/Feb/09   7          15  39     20/Feb/09   34         4933     02/Mar/09   6          55计算SQL Server中的运行总计我知道在SQL Server 2000/2005 / 2008中有各种方法可以做到这一点。我对使用aggregate-set-statement技巧的这种方法特别感兴趣:INSERT INTO @AnotherTbl(id, somedate, somevalue, runningtotal)    SELECT id, somedate, somevalue, null   FROM TestTable   ORDER BY somedateDECLARE @RunningTotal intSET @RunningTotal = 0UPDATE @AnotherTblSET @RunningTotal = runningtotal = @RunningTotal + somevalueFROM @AnotherTbl...这非常有效但我听说有这方面的问题,因为你不一定能保证UPDATE语句将以正确的顺序处理行。也许我们可以就这个问题得到一些明确的答案。但也许人们可以建议其他方式?编辑:现在使用带有设置的SqlFiddle和上面的“更新技巧”示例
查看完整描述

3 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

在SQL Server 2012中,您可以将SUM()OVER()子句一起使用。

select id,
       somedate,
       somevalue,
       sum(somevalue) over(order by somedate rows unbounded preceding) as runningtotalfrom TestTable

SQL小提琴


查看完整回答
反对 回复 2019-05-27
  • 3 回答
  • 0 关注
  • 589 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信