我在Microsoft访问中拥有Customer表,数据如下:
CustID Debit Credit Balance
1 0 3000 -3000
1 3000 0 0
1 0 200 200
2 0 300 500
3 0 400 900
1 500 0 400
我需要的是重新计算余额列,如果根据等式(balance = previousbalance + credit-debit)在借记或贷记中发生任何更新,则这是针对给定的客户ID完成的。 我搜索并发现没有像sql那样的超前和滞后。
答案 0 :(得分:0)
假设您有一个名为[Transactions]的表格,其中包含您的示例数据和一个名为[ID]的AutoNumber
字段:
ID CustID Debit Credit Balance
-- ------ ----- ------ -------
1 1 0 3000 -3000
2 1 3000 0 0
3 1 0 200 200
4 2 0 300 500
5 3 0 400 900
6 1 500 0 400
[ID]小于或等于当前[ID]的[CustID],每行的新[Balance]为SUM(Credit) - SUM(Debit)
。因此,实现这一目标的一种方法是使用像这样的UPDATE查询
UPDATE Transactions
SET [Balance] =
DSum("Credit", "Transactions", "CustID=" & [CustID] & " AND ID<=" & [ID])
- DSum("Debit", "Transactions", "CustID=" & [CustID] & " AND ID<=" & [ID])
运行该查询后,我们的[Balance]数字如下所示:
ID CustID Debit Credit Balance
-- ------ ----- ------ -------
1 1 0 3000 3000
2 1 3000 0 0
3 1 0 200 200
4 2 0 300 300
5 3 0 400 400
6 1 500 0 -300