यदि आप SQL सर्वर 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
इस उदाहरण को चलाने के बाद नोटिस करें कि हर "समूह" में से पहला रिकॉर्ड बाहर रखा गया है, और यह कि अशक्त मानों के साथ रिकॉर्ड ठीक से संभाला गया है।
यदि आपके पास समूह के भीतर रिकॉर्ड ऑर्डर करने के लिए कोई कॉलम उपलब्ध नहीं है, तो आप ऑर्डर-बाय कॉलम के रूप में पार्टीशन कॉलम का उपयोग कर सकते हैं।