SQL:指向重复数据

SQL:指向重复数据,sql,duplicates,sql-update,Sql,Duplicates,Sql Update,我有一张桌子 ID col1 col2 status 1 ABC 123 NULL 2 ABC 214 NULL 3 BCA 001 NULL 4 ABC 123 NULL 5 BWE 765 NULL 6 ABC 123 NULL 7 BCA 001 NULL 我想标记重复数据col1、col2,并用一条消息填充column=status,该消息引用的ID是重复的。 例如,ID=4是ID=1的副本,ID=6是ID=1的副本,ID=7是I

我有一张桌子

ID col1 col2 status
1  ABC  123   NULL
2  ABC  214   NULL
3  BCA  001   NULL
4  ABC  123   NULL
5  BWE  765   NULL
6  ABC  123   NULL
7  BCA  001   NULL
我想标记重复数据col1、col2,并用一条消息填充column=status,该消息引用的ID是重复的。 例如,ID=4是ID=1的副本,ID=6是ID=1的副本,ID=7是ID=3的副本。 状态=重复的ID=此处的ID 预期结果:

    ID col1 col2  status
    1  ABC  123   NULL
    2  ABC  214   NULL
    3  BCA  001   NULL
    4  ABC  123   Duplicate of ID = 1
    5  BWE  765   NULL
    6  ABC  123   Duplicate of ID = 1
    7  BCA  001   Duplicate of ID = 3
我可以标记重复项,但无法指向ID号。我使用的脚本是:

WITH CTE_Duplicates1 AS
  (SELECT ROW_NUMBER() OVER (PARTITION BY col1,col2 
    ORDER BY (SELECT 0)) RN,Status
  FROM tableA 
  )
 UPDATE CTE_Duplicates1
 SET qnxtStatus = 'Duplicate of ID ='
 WHERE RN<>1 

请更正。谢谢

Doh-当然。需要特别订购,而不是随意订购+1.
;WITH CTE_Duplicates1 AS
(
SELECT MIN(ID) OVER (PARTITION BY col1, col2) Mn,
       ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY ID) Rn,
       *
FROM tableA       
)
UPDATE CTE_Duplicates1
SET qnxtStatus = 'Duplicate of ID =' + CAST(Mn AS VARCHAR(11))
WHERE Rn > 1