2

我在 Access 数据库中有两个表(MatMast 和 ChangeLog),其中的公共键是 MatCode。表格如下所示:

垫子

MatCode (PK),当前状态

10001,活动中

10002, 不活动

10003,活动中

变更日志

ChangeInstance (PK)、MatCode、Status、TimeStamp

25452, 10001, 活动, 2012 年 12 月 19 日上午 11:21

25678, 10001, INACTIVE, 2012 年 12 月 20 日 06:45 PM

20296、10002、活动、2012 年 12 月 20 日下午 3:52

我现在的工作是在 Access 中编写一个 SQL 查询(不允许使用 VBA :( 为此)将 MatMast 表更新为:

MatMast(建议更新查询后)

MatCode (PK),当前状态

10001, INACTIVE <== Picking ChangeInstance 25678, 10001最新的

10002, ACTIVE <== Picking ChangeInstance 20296,这是 10002 的唯一记录

10003, ACTIVE <== Unchanged,因为在 ChangeLog 中没有记录

尝试了各种方法。但是,我无法编写更新查询来执行此操作。请,请帮助!

注册,SKB

4

1 回答 1

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 
于 2012-12-21T18:51:17.510 回答