2011-01-06 111 views
0

表項具有以下數據。某些記錄是重複的。重複的標準是相同的NoOfEntry和TypeOfEntry。在具有相同NoOfEntry和TypeOfEntry的記錄中,我想要具有min(dateOfEntry)的記錄的EntryId。我們有3個重複的記錄T1,我想記錄EntryID 1001,因爲它首先被輸入(最小DateOfEntry)。如何在SQL SERVER 2005中查找重複記錄的標識

alt text

回答

1

嘗試CTE(公共表表達式)有ROW_NUMBER排名功能:

;WITH duplicates AS 
(
    SELECT 
     EntryID, DateOfEntry 
     ROW_NUMBER() OVER (PARTITION BY NoOfEntry,TypeOfEntry 
          ORDER BY DateOfEntry DESC) 'RowNum' 
    FROM dbo.Enty 
) 
SELECT EntryID FROM duplicates 
WHERE RowNum > 1 
GO 

的CTE將 「分區」 您通過(NoOfEntry,TypeOfEntry)數據,並開始分配連續的數字(1,2, 3,......)分配給這兩列的每一組的每一行。

具有RowNum > 1任何行是重複的,基於(NoOfEntry,TypeOfEntry)

+0

感謝您的CTE例子。這可能使用groupBy嗎? – Rohit 2011-01-06 10:23:55