2013-02-24 18 views
13

ich eine Abfrage geschrieben haben doppelte Datensätze aus einer Tabelle entfernenLöschen von doppelten Datensatz in SQL Server

WITH a as 
(
SELECT Firstname,ROW_NUMBER() OVER(PARTITION by Firstname, empID ORDER BY Firstname) 
AS duplicateRecCount 
FROM dbo.tblEmployee 
) 
--Now Delete Duplicate Records 
DELETE FROM tblEmployee 
WHERE duplicateRecCount > 1 

Aber ich weiß nicht, wo ich schief gelaufen ist es

Ungültige Spalte sagt Name duplicateRecCount

Kann mir jemand helfen?

Antwort

32

Sie müssen den CTE in der Delete-Anweisung verweisen ...

WITH a as 
(
SELECT Firstname,ROW_NUMBER() OVER(PARTITION by Firstname, empID ORDER BY Firstname) 
AS duplicateRecCount 
FROM dbo.tblEmployee 
) 
--Now Delete Duplicate Records 
DELETE FROM a 
WHERE duplicateRecCount > 1 
4
DELETE duplicates FROM 
(SELECT ROW_NUMBER() OVER (PARTITION BY firstname, lastname, EMPNO, salary,dept ORDER BY empno) cnt 
FROM tblEmp) duplicates 
WHERE duplicates.Cnt > 1 
Verwandte Themen