2013-03-28 87 views
2

我有一個數據庫表,它是從不同的來源自動填充。現在我遇到了一些重複條目的問題。如何刪除MS SQL數據庫中的部分重複項?

例如:

EID | TID | StartDate | EndDate 
-------------------------------------------- 
    1 | 1 | 20.01.2012 | 23.01.2012 
    1 | 2 | 25.01.2012 | 26.01.2012 
    1 | 3 | 27.01.2012 | 30.01.2012 
    2 | 2 | 20.02.2012 | 23.02.2012 
    2 | 2 | 25.01.2012 | 26.01.2012 
    3 | 1 | 20.01.2012 | 23.01.2012 

正如你所看到的,有兩排,其中EID和TID是相同的。我試圖實現的是,那一行,日期較高的行被刪除。 我找到的唯一解決方法是隻選擇較低者的查詢。

SELECT EID, TID, Min(StartDate), Min(EndDate) FROM Table1 GROUP BY EID, TID 

回答

3

您可以使用CTEROW_NUMBER功能:

WITH CTE AS 
(
    SELECT EID, TID, StartDate, EndDate, 
     RN = ROW_NUMBER() OVER (PARTITION BY EID, TID ORDER BY StartDate, EndDate) 
    FROM Table1 
) 
DELETE FROM CTE WHERE RN > 1 

DEMO

+0

非常感謝您這解決了我的問題 – 2013-03-28 08:57:55