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

问题描述 投票:0回答:1

我正在使用Access 2016作为数据库工具,并希望能够从“数据表”中检索“条目”的最新“版本”。每个参数(以及其他参数)都是DataTable中的单独列。当我将嵌套查询拆分为不同的查询时,它可以正常工作,但是一旦我从它们中构建单个查询,它就无法正常工作。我在这里发现了类似的问题,以解决相同的问题,但是我想那些问题没有使用Access2016。在我的情况下,实现建议的答案是行不通的。否则我会犯错而没有意识到。所以这里是问题的事实。

数据表:

enter image description here

所需的最终结果:

enter image description here

我使用以下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);

如果有人也可以解释我的方法中的错误,我将非常感激。

非常感谢。

sql ms-access nested distinct ms-access-2016
1个回答
0
投票

您可以使用相关子查询:

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

不需要其他表或视图。

© www.soinside.com 2019 - 2024. All rights reserved.