On version 2005 and above, something like this should do the job:
AS (SELECT ROW_NUMBER() OVER (PARTITION BY Col1, Col2, Col3
ORDER BY RowID) rownum
DELETE FROM cte
WHERE rownum > 1;
On previous versions you could probably do it using OUTER JOINs, NOT INs or EXISTSs.