आप किसी एकल orderid
. की पहचान करने के लिए विश्लेषणात्मक फ़ंक्शन का उपयोग कर सकते हैं प्रत्येक के लिए ordernum
- शायद या तो न्यूनतम या अधिकतम, लेकिन अन्य फ़ंक्शन उपलब्ध हैं, यह इस बात पर निर्भर करता है कि आपको क्या चाहिए - एक सबक्वेरी में, और फिर केवल पहचानी गई आईडी वाली पंक्तियों को प्राप्त करने के लिए फ़िल्टर करें:
select orderid, ordernum, orderdate, orderxml
from (
select orderid, ordernum, orderdate, orderxml,
max(orderid) over (partition by ordernum) as maxorderid
from orders
)
where orderid = maxorderid;
इनलाइन दृश्य आपकी तालिका से सभी कॉलम और पंक्तियाँ प्राप्त करता है, लेकिन इसके परिणाम में एक अतिरिक्त कॉलम जोड़ता है जिसमें समान क्रम संख्या वाली सभी पंक्तियों में अधिकतम आईडी होती है। (आप वहां या पाठ्यक्रम में कोई भी अन्य फ़िल्टर जोड़ सकते हैं)।
बाहरी फ़िल्टर तब केवल उस अधिकतम मान से मेल खाने वाली प्रत्येक ऑर्डर संख्या के लिए आईडी से मेल खाता है।
यह मानता है कि orderid
अद्वितीय है - कम से कम ordernum
. के लिए लेकिन संभवतः विश्व स्तर पर। आपने कहा था orderdate
ordernum
. के लिए हमेशा समान होता है लेकिन आप इसे विभाजन में शामिल कर सकते हैं यदि नहीं, तो संभवतः उपयोग किए गए विश्लेषणात्मक फ़ंक्शन को संशोधित करके।
(और फिर जांचें कि आपको डुप्लिकेट कैसे और क्यों मिल रहे हैं, और उन्हें रोकने का प्रयास करें; फिर डुप्लिकेट को अपनी तालिका से हटा दें - ध्यान से...)