Ms access 基于上一行更新行以提供运行总计
我在Microsoft access中有客户表,数据如下:Ms access 基于上一行更新行以提供运行总计,ms-access,Ms Access,我在Microsoft access中有客户表,数据如下: 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 我需要的是,如果借方或贷方根据等式(b
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中的超前和滞后。假设您有一个名为[Transactions]的表和一个名为[ID]的
自动编号字段:
ID客户ID借方贷方余额
-- ------ ----- ------ -------
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
对于[CustID],每行新的[Balance]是总和(贷方)-总和(借方)
,其中[ID]小于或等于当前[ID]。所以实现这一点的一种方法是使用像这样的更新查询
更新事务
设置[平衡]=
DSum(“信用”、“交易”、“客户ID=“&[CustID]&”和IDU)该表是否有任何其他列这将唯一地标识每一行并指示交易发生的顺序?是的,我有一个主键自动编号,抱歉我忘了提及它。为什么CustID 1的第一行余额为-3000?这些数据是在运行我自己的查询之后生成的,不幸的是,它给了我错误的值。借方和贷方是正确的值,但余额是我需要根据我的等式重新计算的。我希望我的问题是清楚的。谢谢你,Gord先生,你的查询完全正确,但这不是我所需要的。你查询更新所有记录,我只想更新某个客户id的记录集。我试图替换[CustID]对于1,它还更新了整个记录。好的,我将这些条件添加到查询中,而不是添加到dsum函数中,比如更新测试集[Balance]=dsum(“Credit”、“Test”、“CustID=”&[CustID]&“and ID”)