2016-09-15 5 views
0

2番目の列に最新の日付で1を維持する:私は重複値を持つ行を削除したい削除行とだけ私はこのようなレコードを持つテーブル持って

ID column1 column2  column3 
1 23566 2016-03-12 2016-03-24 
2 23566 2016-05-11 2016-06-14 
3 24532 2016-01-02 2016-01-04 

を最初の列を削除し、2番目の列に最も新しい日付の列のみを保持します。そのよう :

ID column1 column2  column3 
1 23566 2016-05-11 2016-06-14 
2 24532 2016-01-02 2016-01-04 
+0

に変更するn row_numberにcteを使用して、where row_number> 1を削除します。テーブルに関するいくつかの詳細を提供できる場合は、私が意味することを示すことができます。 –

答えて

2

あなたが

;WITH cte 
AS (SELECT 
    *, 
    ROW_NUMBER() OVER (PARTITION BY id ORDER BY date DESC) rn 
FROM yourtable) 
DELETE FROM cte 
WHERE rn > 1 
3

を複製し、削除を取得するためにROW_NUMBERを使用することができますあなたはROW_NUMBERでCTEを使用することができます。

WITH CTE AS 
(
    SELECT t.*, RN = ROW_NUMBER() OVER (PARTITION BY Col1 ORDER BY Col2 DESC) 
    FROM dbo.TableName t 
) 
DELETE FROM CTE WHERE RN > 1 

あなたが何を知りたい場合は」削除を取り消す予定DELETESELECT *

+0

あなたはもっと速かった... +1 – Shnugo

関連する問題