Jika Anda menggunakan SQL Server 2005 atau lebih baru (dan tag untuk pertanyaan Anda menunjukkan SQL Server 2008), Anda dapat menggunakan fungsi peringkat untuk mengembalikan catatan duplikat setelah yang pertama jika menggunakan gabungan kurang diinginkan atau tidak praktis karena beberapa alasan. Contoh berikut menunjukkan ini dalam tindakan, di mana ia juga bekerja dengan nilai nol di kolom yang diperiksa.
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
Perhatikan setelah menjalankan contoh ini bahwa catatan pertama dari setiap "grup" dikecualikan, dan bahwa catatan dengan nilai nol ditangani dengan benar.
Jika Anda tidak memiliki kolom yang tersedia untuk memesan catatan dalam grup, Anda dapat menggunakan kolom partisi-per sebagai kolom urutan-oleh.