我有一个临时表,我们称之为#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列。
答案 0 :(得分:3)
有 基于集合的方法来计算SQL Server中的运行总计,但是在当前版本的SQL Server中,基于游标的解决方案通常更快。
Adam Machanic写了一篇很棒的文章here。
答案 1 :(得分:-1)
答案是触发器。我使用它们,它工作得很漂亮。我没有完全你的设置(如果我可以说,它有点奇怪),但总的来说,它们是正确的方法。你需要注意订购,但除此之外,应该没问题。