我有一张包含这样记录的表格:
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
我想删除第一列中具有重复值的行,并且只保留第二列中具有最新日期的行。 像这样:
ID column1 column2 column3
1 23566 2016-05-11 2016-06-14
2 24532 2016-01-02 2016-01-04
答案 0 :(得分:3)
您可以将CTE与ROW_NUMBER
:
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
如果您想知道要删除的内容,请将DELETE
更改为SELECT *
答案 1 :(得分:2)
您可以使用row_number来获取重复和删除
;WITH cte
AS (SELECT
*,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY date DESC) rn
FROM yourtable)
DELETE FROM cte
WHERE rn > 1