SQL 访问 2007/2010 选择具有不同 ID 的最大日期

SQL Access 2007/2010 Selecting Max Date with Distinct ID

我相信很多人已经问过这个问题,因为我已经从这里阅读了所有主题。但问题是我有 3 个相关的 table 而不是 2 个,我不确定如何为它编码

我有一个 table:tbl_Instrumentstbl_Recordtbl_Cal_Bytbl_Instruments 拥有所有仪器信息,包括它们的 ID。 tbl_Cal_By 有校准工具的人的信息。 tbl_Records 有所有仪器记录及其校准日期。它从 tbl_Instruments 继承 ID 为 Inst_ID,从 tbl_Cal_By 继承名称为 Name_ABBR.

tbl_Instruments: ID, 类型

tbl_Cal_By: Cal_ID, Name_ABBR

tbl_Records: Record_ID, Inst_ID, Cal_Date, Name_ABBR

这是我的代码。

SELECT tbl_Records.Inst_ID
    ,tbl_Instruments.Type
    ,Max(tbl_Records.Cal_Date) AS MaxOfCal_Date
    ,tbl_Cal_By.Name_ABBR
FROM tbl_Cal_By
RIGHT JOIN (
    tbl_Instruments INNER JOIN tbl_Records ON tbl_Instruments.ID = tbl_Records.Inst_ID
    ) ON tbl_Cal_By.ID = tbl_Records.BY
GROUP BY tbl_Records.Inst_ID
    ,tbl_Instruments.Type
    ,tbl_Cal_By.Name_ABBR;

想要的结果:

任何帮助将不胜感激!

您可以通过多种方法执行此操作,其中一种是:

SELECT tbl_Records.Inst_ID
    ,tbl_Instruments.Type
    ,tbl_Records.Cal_Date AS MaxOfCal_Date
    ,tbl_Cal_By.Name_ABBR
FROM tbl_Cal_By
RIGHT JOIN (
    tbl_Instruments INNER JOIN tbl_Records ON tbl_Instruments.ID = tbl_Records.Inst_ID
    ) ON tbl_Cal_By.ID = tbl_Records.BY
WHERE NOT EXISTS(SELECT 1 FROM tbl_Records t
                 WHERE t.Inst_ID = tbl_Instruments.ID
                      AND t.Cal_date > tbl_Records.Cal_Date)

我不完全确定访问语法和别名..所以也许你需要稍微调整一下 - 就像第一个别名 tbl_records 这样它会识别它,或者它可能会起作用..