0

我有一个临时表,我们称之为#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

我想用运行余额更新余额列。以便正确更新 Balance 列。余额基本上是 Billed - Credited,但必须考虑上一行。

所以在我的例子中,余额将是这样的:

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

有没有办法在不遍历行并保持运行平衡的情况下做到这一点?基本上我希望以基于集合的方式更新 Balance 列。

4

2 回答 2

3

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

Adam Machanic 在这里写了一篇很棒的文章。

于 2009-10-02T03:08:45.587 回答
-1

答案是触发器。我使用它们,效果很好。我没有您的确切设置(如果我可以说,这有点奇怪),但总的来说,它们是正确的方法。您需要注意订购,但除此之外,应该没问题。

于 2009-10-02T03:10:58.797 回答