我正在尝试使用 Microsoft SQL Server 编写 SQL 查询。
我的表看起来类似于:
bardcode | products | timestamp
1234 | 12 | 2013-02-19 00:01:00
1234 | 17 | 2013-02-19 00:01:00
432 | 10 | 2013-02-19 00:01:00
432 | 3 | 2013-02-19 00:02:00
643 | 32 | 2013-02-19 00:03:00
643 | 3 | 2013-02-19 00:03:00
123 | 10 | 2013-02-19 00:04:00
我正在尝试根据最近的时间戳获取唯一条形码列表。
这是我一直在想的不工作的查询:
SELECT DISTINCT [Barcode], [Timestamp]
FROM [InventoryLocatorDB].[dbo].[Inventory]
WHERE max([Timestamp])
编辑 我也想保留额外的列。我做一个加入或something。
例如,我想选择具有最新时间戳的条形码,并希望所有其他列信息都随附,例如产品栏目
最佳答案
这应该有效:
SELECT [Barcode], max([TimeStamp])
FROM [InventoryLocatorDB].[dbo].[Inventory]
GROUP BY [Barcode]
Demo
编辑
SELECT [Barcode], [Products], [TimeStamp]
FROM [InventoryLocatorDB].[dbo].[Inventory] AS I
WHERE [TimeStamp] = (SELECT MAX([TimeStamp])
FROM [InventoryLocatorDB].[dbo].[Inventory]
WHERE [Barcode] = I.[Barcode])
查询保留具有相同
BarCode
/TimeStamp
的元组。根据 TimeStamp
的粒度,这可能无效。Demo 2
有很多方法可以“过滤”上述结果。
例如。每个
BarCode
,最新的 TimeStamp
, Products
的最大值只有一个元组:SELECT [Barcode], [Products], [TimeStamp]
FROM [InventoryLocatorDB].[dbo].[Inventory] AS I
WHERE [TimeStamp] = (SELECT MAX([TimeStamp])
FROM [InventoryLocatorDB].[dbo].[Inventory]
WHERE [Barcode] = I.[Barcode]) AND
[Products] = (SELECT MAX([Products])
FROM [InventoryLocatorDB].[dbo].[Inventory]
WHERE [Barcode] = I.[Barcode] and [TimeStamp] = I.[TimeStamp])
Demo 3
关于sql - 选择具有最大时间戳的唯一条形码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26341790/