Můžete DELETE z cte:
WITH cte AS (SELECT *,ROW_NUMBER() OVER(PARTITION BY uniqueid ORDER BY col2)'RowRank'
FROM Table)
DELETE FROM cte
WHERE RowRank > 1
ROW_NUMBER() funkce přiřadí každému řádku číslo. PARTITION BY se používá k zahájení číslování každé položky v této skupině, v tomto případě každé hodnoty uniqueid začne číslovat od 1 a odtud půjde nahoru. ORDER BY určuje, v jakém pořadí čísla jdou. Protože každý uniqueid bude číslován od 1, každý záznam s ROW_NUMBER() větší než 1 má duplicitní uniqueid
Chcete-li porozumět tomu, jak ROW_NUMBER() funkce funguje, jen to vyzkoušejte:
SELECT *,ROW_NUMBER() OVER(PARTITION BY uniqueid ORDER BY col2)'RowRank'
FROM Table
ORDER BY uniqueid
Logiku ROW_NUMBER() můžete upravit funkce pro nastavení, který záznam si ponecháte nebo odstraníte.
Chcete-li to například provést v několika krocích, nejprve smažte záznamy se stejným příjmením, ale různými křestními jmény, můžete přidat příjmení do pole PARTITION BY :
WITH cte AS (SELECT *,ROW_NUMBER() OVER(PARTITION BY uniqueid, col3 ORDER BY col2)'RowRank'
FROM Table)
DELETE FROM cte
WHERE RowRank > 1