2014-10-13 2 views
3

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]) 

편집 : 여기

내가 생각 봤는데 내되지 일하는 쿼리입니다. 나는 합류하거나 할 것인가?

예를 들어 최신 타임 스탬프로 바코드를 선택하고 다른 모든 열 정보가 함께 표시되도록하고 싶습니다. 제품 열

+2

이 SO에 매우 인기있는 질문은, 그것의 예제의 톤이있다. 여기에 [한 예]가있다. (http://stackoverflow.com/questions/1140064/sql-query-to-get-most-recent-row-for-each-instance-of-a-given-key/1140091#1140091) – Andrew

+0

그들이 충분히 구체적이지 않고 아직 미숙하다면 파싱하기가 어렵습니다. – visc

답변

3

이 작동합니다 :

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 당 하나의 튜플, Products의 최신 TimeStamp, 최대 값 :

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

관련 문제