我如何 select 在 Access 2016 的另一列上具有最大值的不同行

How can I select distinct rows with max values on another column in Access 2016

我正在使用 Access 2016 作为数据库工具,并希望能够从 "DataTable" 中检索 "Entry" 的最新 "Version"。这些参数中的每一个(除其他外)都是 DataTable 中的单独列。当我将嵌套查询拆分为不同的查询时,它工作正常,但一旦我从中构建单个查询,它就不会。 我发现这里提出了类似的问题来解决同样的问题,但我猜这些问题没有使用 Access 2016。实施建议的答案在我的案例中不起作用。或者我犯了错误而没有意识到。所以问题的事实在这里。

数据表:

期望的最终结果:

我使用以下 SQL 表达式 (qry1) 来筛选具有最高版本的条目

SELECT DataTable.[Entry] AS EntrySorted, max(DataTable.[Version]) AS MaxVersion
FROM DataTable
GROUP BY DataTable.[Entry];

当我构建一个使用第一个查询的单独查询 (qry2) 时,它按预期工作

SELECT DataTable.[Entry], DataTable.[Summary]
FROM DataTable
INNER JOIN qry1
ON (DataTable.[Entry] = qry1.EntrySorted) AND (DataTable.Version = qry1.MaxVersion);

现在问题来了:一旦我将这两个查询结合起来,它就不起作用了。

SELECT DataTable.[Entry], DataTable.[Summary]
FROM DataTable
INNER JOIN
(
SELECT DataTable.[Entry] AS EntrySorted, max(DataTable.[Version]) AS MaxVersion
FROM DataTable
GROUP BY DataTable.[Entry]
)
ON (DataTable.[Entry] = EntrySorted) AND (DataTable.Version = MaxVersion);

如果有人也能解释我方法中的错误,我将不胜感激。

非常感谢。

您可以使用相关子查询:

select dt.*
from datatable as dt
where dt.version = (select max(dt.version)
                    from datatable as dt2
                    where dt2.entry = dt.entry
                   );

不需要额外的 table 或视图。