如何使用OVER子句删除SQL Server中的重复行?

Bil*_*eer 4 sql t-sql sql-server

这是我表中的列:

Id
EmployeeId
IncidentRecordedById
DateOfIncident
Comments
TypeId
Description
IsAttenIncident
Run Code Online (Sandbox Code Playgroud)

我想删除重复行的位置EmployeeId, DateOfIncident, TypeIdDescription相同 - 只是为了澄清 - 我确实希望保留其中一行.我想我应该使用该OVER条款PARTITION,但我不确定.

谢谢

Tim*_*ter 17

如果要保留可以使用的重复组的一行ROW_NUMBER.在这个例子中,我保持最低的行Id:

WITH CTE AS 
(
    SELECT rn = ROW_NUMBER() 
                OVER( 
                  PARTITION BY employeeid, dateofincident, typeid, description 
                  ORDER BY Id ASC), * 
    FROM dbo.TableName
) 
DELETE FROM cte 
WHERE  rn > 1 
Run Code Online (Sandbox Code Playgroud)