Jeśli używasz programu SQL Server 2005 lub nowszego (a znaczniki pytania wskazują SQL Server 2008), możesz użyć funkcji rankingu, aby zwrócić zduplikowane rekordy po pierwszym, jeśli użycie sprzężeń jest z jakiegoś powodu mniej pożądane lub niepraktyczne. Poniższy przykład pokazuje to w działaniu, gdzie działa również z wartościami null w badanych kolumnach.
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
Zauważ, że po uruchomieniu tego przykładu pierwszy rekord z każdej „grupy” jest wykluczony i że rekordy z wartościami null są obsługiwane poprawnie.
Jeśli nie masz dostępnej kolumny do porządkowania rekordów w grupie, możesz użyć kolumn podziału według jako kolumn uporządkowania według.