访问查询以选择一列的MAX但在另一列上唯一的行

Mat*_*all 5 ms-access

假设我想要一个表格,它给我下面的4列数据,但我只想为每个唯一的"ID"使用一行,使用"Date"列只选择每个唯一"ID"的最新日期:

|--ID--|-Type-|-Code-|--Date--|
|   1  |   A  |  11  |11/07/13|
|   2  |   A  |  11  |11/07/13|
|   2  |   B  |  12  |10/07/13|   <-- don't want this record from ID=2 as
|   3  |   A  |  11  |11/07/13|       there is a more recent date for it
|   4  |   A  |  10  |11/07/13|       than 10/07/2013
|   5  |   A  |  11  |11/07/13|
Run Code Online (Sandbox Code Playgroud)

我已经尝试调整这个似乎是类似问题的答案,但我收到以下错误:

您的查询不包含指定的表达式"ID"作为聚合函数的一部分

这是我试图在Access中运行的SQL的改编版本:

SELECT ESM.ID, ESM.Type, ESM.Code, ESM.Date
FROM Emp_Stat_Mon As ESM
INNER JOIN
    (
    SELECT ID, MAX(Date) AS MaxDate
    FROM Emp_Stat_Mon
    GROUP BY ID
    ) groupedESM ON ESM.ID = groupedESM.ID AND ESM.Date = groupedESM.MaxDate;
Run Code Online (Sandbox Code Playgroud)

Ron*_*B.I 5

这样做:

SELECT  ID, Type, Code, Date
FROM Emp_Stat_Mon t1
WHERE t1.Date = 
    (SELECT Max(t2.Date) 
     FROM Emp_Stat_Mon t2 
     WHERE t2.ID=t1.ID 
     GROUP BY t2.ID)
Run Code Online (Sandbox Code Playgroud)

带有示例数据的SQLFiddle:SQLFiddle