• I believe you meant to say...partition it by ProductName and delete all the records greater than rownum 1.

    You probably missed to add the Partition By in the Over clause. Yes, this is great too and less code.

    DELETE D FROM

    (SELECT ProductName, ROW_NUMBER()OVER(PARTITION BY ProductName ORDER BY ProductName) AS RowNum

    FROM dbo.T1) D

    where RowNum > 1