如何一次更新运行平衡?

时间:2009-10-02 03:01:32

标签: sql sql-server running-balance

我有一个临时表,我们称之为#invoices,定义为

create table (id int identity(1, 1), billed money, credited money, balance money)

我有以下数据

Billed   Credited
140.00   
20.00
          60.00
          20.00
         -20.00

我想用运行余额更新余额列。以便正确更新“平衡”列。余额基本上是,结算 - 信用,但必须在上一行的帐户中使用。

所以在我的例子中,余额将如此:

Billed   Credited  Balance
140.00              140.00
20.00               160.00
          60.00     100.00
          20.00      80.00
         -20.00    -100.00

有没有办法在不循环行并保持运行平衡的情况下执行此操作?基本上我希望以基于集合的方式更新Balance列。

2 个答案:

答案 0 :(得分:3)

基于集合的方法来计算SQL Server中的运行总计,但是在当前版本的SQL Server中,基于游标的解决方案通常更快。

Adam Machanic写了一篇很棒的文章here

答案 1 :(得分:-1)

答案是触发器。我使用它们,它工作得很漂亮。我没有完全你的设置(如果我可以说,它有点奇怪),但总的来说,它们是正确的方法。你需要注意订购,但除此之外,应该没问题。