想象一下下表(称为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和上面的“更新技巧”示例
添加回答
举报
0/150
提交
取消