我对 SQL 非常陌生,正在尝试创建一个查询来对表进行排序(我已经使该部分正常工作),然后仅显示每个相应组件和序列号的最新记录。
基本上,我正在创建一个 checkin / checkout 系统,并且只想列出每个特定组件的最新状态。每次 checkin 和 checkout 组件时,都会为该特定 checkin / checkout 分配一个唯一的 ID。因此我知道我可以使用最高的唯一 ID 来确定在输出表中显示哪条记录。
(上图是我拥有的,下图是我想要的)
如何删除前两个字段重复的记录?
这是我到目前为止所拥有的:
SELECT [Check In/Out].Component, [Check In/Out].[Serial Number], [Check In/Out].[Unique ID], [Check In/Out].DateTime, [Check In/Out].Initials, [Check In/Out].[Check In/Out]
FROM [Check In/Out]
ORDER BY [Check In/Out].Component, [Check In/Out].[Serial Number], [Check In/Out].[Unique ID];
我发现了类似的代码(如下所示),但是我尝试修改代码以与我的代码一起使用失败了:
SELECT Customers.ID, Customers.FullName, Customers.SaleDate
FROM Customers
WHERE [SaleDate] =
(SELECT Max([SaleDate])
FROM Customers AS X
WHERE X.[FullName] = [Customers].[FullName])
任何帮助将不胜感激。
最佳答案
对于 Access SQL,这可能有效:
SELECT *
FROM [Check In/Out] AS tA INNER JOIN (SELECT Component, [Serial Number],
MAX(Unique ID) AS highest_id
FROM [Check In/Out]
GROUP BY Component, [Serial Number]) AS
tB ON tA.Component = tB.Component
AND
tA.[Serial Number] = tB.[Serial Number]
AND
tA.[Unique ID] = tB.highest_id
关于sql - Access SQL查询: How to only display most recent record of duplicates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40003449/