Zunächst möchte ich vorschlagen, dass Sie nicht CTE Verwendung temporäre Tabelle für Ihre Lösung den unten stehenden Link für die Suche nach, warum ich das
https://dba.stackexchange.com/questions/13112/whats-the-difference-between-a-cte-and-a-temp-table
wissen mehr über die unten ma sagen verwenden verwenden
Link
http://www.dotnet-tricks.com/Tutorial/sqlserver/X517150913-Difference-between-CTE-and-Temp-Table-and-Table-Variable.html
Nun wollen wir zurück zu Ihrer Lösung lässt erhalten, habe ich verwendet, Temp-Tabelle
Select e.emp_num,e.from_date,e.to_date,e.[ req_ser],e.[ req_year],COUNT(1) number_of_duplicates
into #temp1 from empmission e
group by emp_num,from_date,to_date,[ req_ser],[ req_year]
Truncate Table empmission
Insert into empmission
Select t.emp_num,
t.from_date,
t.to_date,
t.[ req_ser],
t.[ req_year]
from #temp1 t
Drop Table #temp1 --Droping the temp table
Select * from empmission
Oder Sie können mit CTE Als
WITH todelete As (
select em.*,
row_number() over (partition by emp_num, [from_date],[to_date],[ req_ser], [ req_year]
order by (select null)) as cnt
from empmission em
)
DELETE FROM todelete
WHERE cnt > 1;
Eigentlich gehen, sollte es zwei Duplikate lassen. Ihre where-Klausel sollte 'WHERE cnt> 1 'sein. –