2011-09-21 3 views
0

내가 테이블 ABC가SQL 테이블 필터?

Id  Sub_id  Date 

CS01032 Sub012 2011-09-21 16:29:58.853 
CS01033 Sub013 2011-09-21 16:30:09.863 
CS01033 Sub014 2011-09-21 16:30:12.113 
CS01034 Sub015 2011-09-21 16:37:57.233 
CS01035 Sub016 2011-09-21 16:51:52.527 
CS01035 Sub017 2011-09-21 16:51:54.430 
CS01035 Sub018 2011-09-21 16:51:56.333 

제가

Id  Sub_id  Date 

CS01032 Sub012 2011-09-21 16:29:58.853 
CS01033 Sub014 2011-09-21 16:30:12.113 
CS01034 Sub015 2011-09-21 16:37:57.233  
CS01035 Sub018 2011-09-21 16:51:56.333 

같이이 테이블 데이터를 필터링 할 별개의 날짜와 시간

+0

그냥 언급하면 ​​...이 일은 일어나지 않아야합니다. 이드는 고유해야합니다. – Jaanus

답변

3

사용 CTE를함으로써 상위 1 sub_id 순서와 ID와 ROW_NUMBER 함수를 의미 :

;WITH TopData AS 
( 
    SELECT Id, Sub_Id, Date, 
     ROW_NUMBER() OVER(PARTITION BY Id ORDER BY Date DESC) AS 'RowNum') 
    FROM 
     dbo.ABC 
) 
SELECT Id, Sub_Id, Date 
FROM TopData 
WHERE RowNum = 1 

CTE (Common Ta ble Expression)은 데이터를 "Id"분할하고 각 그룹의 항목 ROW_NUMBER에 1에서 시작하여 날짜 내림차순 (최신 날짜부터) 순서대로 지정합니다. 각 그룹에 대한 첫 번째 항목 - 각 Id에 대한 최신 항목 - RowNum = 1