我有一个表,提供带有以下标题的时间点快照:
| 客户#| 最后一次交易。| 收费| 数量
每个月,我都会收到来自第三方的文件,该文件包含添加新客户编号或更改现有客户信息的交易。一个月内对同一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] 删除。
我来说两句