我有一个表格,提供以下标题的时间点快照:
| Cust#|最后的Trans。 |充电|数量|
每个月,我都会收到来自第三方的文件,其中包含将添加新cust#或更改现有客户信息的交易。我在一个月内对同一个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'
请注意,Charge是增量的,而Quantity不是。更新费用按预期工作,但数量不是。我不一定得到最新的数量。
如果对一个客户有任何更改,我如何确保最后一个数量字段来自最新的CHANGE行(即该cust#的最大ID)?
答案 0 :(得分:1)
SELECT * FROM snp
WHERE ID IN (SELECT MAX(ID)
FROM tr
GROUP BY CUST#)
内部查询将为您提供所有客户'最大ID。您可以根据更改条件过滤cust#。外部查询将为您提供该行的所有详细信息。然后,您可以在查询中使用这些值。