使用ANOTHER表中的值字段更新表,但根据时间戳从第二个值中选择唯一值

时间:2012-12-21 18:24:44

标签: ms-access-2007

我在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

1 个答案:

答案 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