Извиняйте что вмешиваюсь :)
Предложенные решения к сожалению не всегда будут работать - т.к. добавлять (убивать) колонку у таблицы может только пользователь имеющий соответствующие права!
цитирую Вooks Online:
\nPermissions
ALTER TABLE permissions default to the table owner, members of the sysadmin fixed server role, and to members of the db_owner and db_ddladmin fixed database roles.
Кроме того, добавление колонки и ее использование должны быть в разных батчах - это тоже накладывает определенные ограничения :((
Могу предложить единственное решение поставленой задачи, которое будет работать всегда, к сожалению оно достаточно медленное :(
\nSET ROWCOUNT 1
WHILE 1=1
BEGIN
DELETE t
FROM DoubleTable t
WHERE EXISTS (SELECT 1
FROM DoubleTable tt
WHERE tt.Field1 = t.Field1
AND tt.Field2 = t.Field2
GROUP BY tt.Field1, tt.Field2
HAVING COUNT(*) > 1)
IF @@rowcount = 0 BREAK
END
SET ROWCOUNT 0
по хорошему конечно же следует еще добавить обработку ошибок :))