我的表格中包含以下几个字段
ID | OpeningBal | A | B | C | D | ClosingBal
此处当日的期初余额为前一天的期末余额,期末余额按此公式计算
OpeningBal + A - B - (C + D) - C
但是此表中的当前数据是错误的,因为先前为结算余额应用了错误的公式。我试图循环遍历此表的所有记录,并将期末余额更新为实际值。我想用这个游标中当前行的结束余额来更新下一行的期初余额,但我没有下一行的ID。有什么想法吗?
实际结果:
ID OPBal A B C D CLBal
1 0 80 4 6 0 90
2 90 8 6 0 0 104
5 104 5 4 0 9 122
7 122 10 3 5 0 140
预期结果:
ID OPBal A B C D CLBal
1 0 80 4 6 0 64
2 64 46 6 0 0 104
5 104 5 4 0 9 96
7 96 10 3 5 0 93
答案 0 :(得分:1)
update tablename set openingbalance=a.clcurrentrow from
(select LAG(closingbalance) over (order by id) clcurrentrow from tablename ) a
答案 1 :(得分:0)
谢谢大家。我使用LAG获得了解决方案,我将根据我的要求对其进行修改。
SELECT
ID,
LAG(ClosingBalance,1,0.00) OVER (ORDER BY ID) PrevClosingBalance,
ClosingBalance
FROM Table1
UPDATE Table1
SET OpeningBalnace = @PrevClosingBalance
ClosingBalance = @PrevClosingBalance + A - B -(C+D)-C
WHERE ID = @ID