MS Access SQL顺序更新

csg

我有一个表,提供带有以下标题的时间点快照:

| 客户#| 最后一次交易。| 收费| 数量

每个月,我都会收到来自第三方的文件,该文件包含添加新客户编号或更改现有客户信息的交易。一个月内对同一Cust#有多个更新时,我遇到问题。

例如:

处理以下交易文件:

交易

应该产生以下快照表:

快照

它可能不是最好的方法,但是现在我有3个独立的查询来处理NEW,CHANGE和CANCEL。NEW和CANCEL没有问题。

这是我的CHANGE查询的设置方式:

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)?

SELECT * FROM snp
WHERE ID IN (SELECT MAX(ID)
             FROM tr
             GROUP BY CUST#)

内部查询将为您提供所有客户的最大ID。您可以根据更改标准过滤客户编号。外部查询将为您提供该行的所有详细信息。然后,您可以在查询中使用这些值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章