หากคุณใช้ SQL Server 2005 หรือใหม่กว่า (และแท็กสำหรับคำถามของคุณระบุว่า SQL Server 2008) คุณสามารถใช้ฟังก์ชั่นการจัดอันดับเพื่อส่งกลับระเบียนที่ซ้ำกันหลังจากหนึ่งรายการแรกหากใช้การรวมเป็นที่ต้องการน้อยกว่าหรือไม่สามารถทำได้ ตัวอย่างต่อไปนี้แสดงสิ่งนี้ในทางปฏิบัติซึ่งยังใช้งานได้กับค่า Null ในคอลัมน์ที่ตรวจสอบ
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
โปรดสังเกตว่าหลังจากเรียกใช้ตัวอย่างนี้ว่ามีการยกเว้นระเบียนแรกของ "กลุ่ม" ทุกกลุ่มและมีการจัดการระเบียนที่มีค่า Null อย่างถูกต้อง
หากคุณไม่มีคอลัมน์ให้เรียงลำดับระเบียนภายในกลุ่มคุณสามารถใช้คอลัมน์แยกตามพาร์ติชันเป็นคอลัมน์เรียงลำดับตาม