2011-09-21 92 views
0

我有一個表ABCSql表格過濾器?

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

只要提及......這應該不會發生,id應該是唯一的。 – 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 

The CTE(Common Ta ble表達式)將按Id「分區」您的數據,並給出每個組的條目ROW_NUMBER值,從1開始,按日期降序排序(最新的日期優先)。每個組的第一個條目 - 每個Id的最新條目 - 具有RowNum = 1