根据日期仅选择每条记录的最新版本 | MS Access [重复]
Posted
技术标签:
【中文标题】根据日期仅选择每条记录的最新版本 | MS Access [重复]【英文标题】:Select only the latest version of each record based on date | MS Access [duplicate] 【发布时间】:2019-09-13 02:30:27 【问题描述】:目前我有一个包含 3 列的 Access 表:
PersonID、代码、日期
一个 PersonID 可以在不同的日子有不同的代码,我想只显示最近一天的最新代码。
全表:
我要查找的查询结果:
我尝试将 MAX 条件添加到数据列,但它似乎不起作用:
MAX([Date])
【问题讨论】:
该链接说明了如何显示前 3 条记录,我需要查询仅显示基于日期的最新代码 @Rene 你能告诉我如何显示我的数据,它有点不同 【参考方案1】:有多种方法可以做到这一点。第一个很可能是最简单的。这与 Rene 在 cmets 中发布的链接中的想法完全相同。
您需要在 where 子句中使用子查询来使用 MAX
函数获取最近的日期。
SELECT *
FROM [Table]
WHERE Date = (SELECT MAX(T1.Date) FROM [Table] AS T1 WHERE T1.PersonID = Table.PersonID)
在更复杂的版本中,您也可以通过内部连接获得相同的结果:
SELECT
TABLE.PersonID
, TABLE.Code
, MaxDate
FROM
[Table]
INNER JOIN
(
SELECT
PersonID
, Max(DATE) AS MaxDate
FROM
[Table]
GROUP BY
PersonID
)
AS T1
ON
(
TABLE.PersonID = T1.PersonID
AND TABLE.Date = T1.MaxDate
)
你会得到以下:
PersonID Code Date
115 38833 8/14/2019
117 38838 6/13/2018
【讨论】:
这两个查询似乎都出现了两次最大值,所以我得到了 2019 年 8 月 14 日两次和 2018 年 6 月 13 日两次。我正在使用您的确切查询,所以我不确定问题出在哪里 只有在数据表中重复了最大日期时才有可能。如果PersonID
和Date
不形成主键,那么它将返回相同PersonID
的所有最大日期。仔细检查表中的数据。您发布的示例数据不会发生这种情况。以上是关于根据日期仅选择每条记录的最新版本 | MS Access [重复]的主要内容,如果未能解决你的问题,请参考以下文章