Якщо ви використовуєте SQL Server 2005 або новішу версію (а теги для вашого питання вказують на SQL Server 2008), ви можете використовувати функції ранжування для повернення дублікатів записів після першої, якщо використання приєднань з певних причин є менш бажаним або недоцільним. Наступний приклад показує це в дії, де він також працює з нульовими значеннями в розглянутих стовпцях.
create table Table1 (
Field1 int,
Field2 int,
Field3 int,
Field4 int
)
insert Table1
values (1,1,1,1)
, (1,1,1,2)
, (1,1,1,3)
, (2,2,2,1)
, (3,3,3,1)
, (3,3,3,2)
, (null, null, 2, 1)
, (null, null, 2, 3)
select *
from (select Field1
, Field2
, Field3
, Field4
, row_number() over (partition by Field1
, Field2
, Field3
order by Field4) as occurrence
from Table1) x
where occurrence > 1
Зауважте після запуску цього прикладу, що перший запис з кожної "групи" виключається, а записи з нульовими значеннями обробляються належним чином.
Якщо у вас немає стовпця для замовлення записів у групі, ви можете використовувати стовпці розділення як стовпці порядку.