我在Access数据库中有两个表(MatMast和ChangeLog),其中公共密钥是MatCode。表格如下所示:
MatMast
MatCode(PK),CurrentStatus
10001,ACTIVE
10002,不活跃
10003,ACTIVE
更新日志
ChangeInstance(PK),MatCode,Status,TimeStamp
25452,10001,ACTIVE,19-Dec-2012 11:21 AM
25678,10001,INACTIVE,2012年12月20日下午06:45
20296,10002,ACTIVE,20-Dec-2012 03:52 PM
我现在的工作是在Access中编写一个SQL查询(不允许使用VBA :(为此)将MatMast表更新为:
MatMast(提议更新查询后)
MatCode(PK),CurrentStatus
10001,INACTIVE< ==领取ChangeInstance 25678,这是10001的最新信息
10002,ACTIVE< ==领取ChangeInstance 20296,这是10002的唯一记录
10003,ACTIVE< ==未更改,因为在ChangeLog中没有此记录
尝试了各种方法。但是,我无法编写更新查询来执行此操作。拜托,请帮忙!
Regds, SKB
答案 0 :(得分:0)
你提到了一项任务,所以我怀疑更新是必需的:
UPDATE matmast
INNER JOIN (SELECT c.changeinstance,
c.matcode,
c.status,
c.TIMESTAMP
FROM changelog c
WHERE (( ( c.changeinstance ) IN
(SELECT TOP 1 changeinstance
FROM changelog q
WHERE q.matcode = c.matcode
ORDER BY TIMESTAMP DESC,
changeinstance) ))) x
ON matmast.matcode = x.matcode
SET matmast.currentstatus = x.status