Давайте предположим, что у нас есть таблица с именем Department, и она имеет 4 столбца, как в
DptName, DptAddress, DptCode, DptTel. Теперь мы хотим удалить все записи, которые идентичны для первых 3 и отличаются только на DptTel.
(вы можете приспособить это к вашей фактической таблице и логике равенства)
вот запрос для достижения так
;with cte as (
select DptName, count(DptName) as cnt
from Department
group by DptName, DptAddress, DptCode
having count(DptName) > 1
)
, cte2 as (
select top 1 * from Department
where exists (
select *
from cte
where cte.DptName = Department.DptName
)
union
select * from Department
where not exists (
select *
from cte
where cte.DptName = Department.DptName
)
)
delete from Department
where not exists (
select *
from cte2
where cte2.DptTel = Department.DptTel
)
он полностью протестирован и может быть использован, вам нужно только заполнить список столбцов и указать различия в окончательном выборе.
Вуаля !!