MS Access SQL按顺序更新
我有一个表,它提供了一个时间点快照,标题如下: |客户最后一次交易收费|数量| 每个月,我都会收到一份来自第三方的文件,其中包含添加新客户或更改现有客户信息的交易。当同一客户在一个月内有多个更新时,我遇到了问题 例如: 正在处理以下事务文件: 应生成以下快照表: 这可能不是最好的方法,但现在我有3个单独的查询来处理NEW、CHANGE和CANCEL。“新建”和“取消”没有问题 以下是如何设置我的更改查询:MS Access SQL按顺序更新,sql,ms-access,Sql,Ms Access,我有一个表,它提供了一个时间点快照,标题如下: |客户最后一次交易收费|数量| 每个月,我都会收到一份来自第三方的文件,其中包含添加新客户或更改现有客户信息的交易。当同一客户在一个月内有多个更新时,我遇到了问题 例如: 正在处理以下事务文件: 应生成以下快照表: 这可能不是最好的方法,但现在我有3个单独的查询来处理NEW、CHANGE和CANCEL。“新建”和“取消”没有问题 以下是如何设置我的更改查询: UPDATE snp INNER JOIN tr ON snp.[Cust#] = t
UPDATE snp
INNER JOIN tr
ON snp.[Cust#] = tr.[Cust#]
SET
snp.[Last Trans] = tr.Transaction,
snp.Charge = snp.Charge + tr.Charge,
snp.Quantity = tr.Quantity
WHERE tr.Trans='CHANGE'
请注意,费用是递增的,数量不是递增的。更新费用按预期工作,但数量不符合要求。我不一定能得到最新的数量
如何确保如果某个客户发生任何更改,则最后一个数量字段取自最新的更改行(即该客户的最大ID)
内部查询将为您提供所有客户的最大ID。您可以根据更改条件筛选客户。外部查询将提供该行的所有详细信息。然后可以在查询中使用这些值
SELECT * FROM snp
WHERE ID IN (SELECT MAX(ID)
FROM tr
GROUP BY CUST#)