MS Access SQL按顺序更新

时间:2014-10-14 18:11:35

标签: sql ms-access

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

| Cust#|最后的Trans。 |充电|数量|

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

例如:

处理以下交易文件:

transactions

应该产生以下快照表:

snapshot

这可能不是最好的方法,但现在我有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)?

1 个答案:

答案 0 :(得分:1)

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

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