Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

CLOB कॉलम वाली चुनिंदा क्वेरी में डुप्लिकेट परिणाम हटा दें

आप किसी एकल 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 . के लिए हमेशा समान होता है लेकिन आप इसे विभाजन में शामिल कर सकते हैं यदि नहीं, तो संभवतः उपयोग किए गए विश्लेषणात्मक फ़ंक्शन को संशोधित करके।

(और फिर जांचें कि आपको डुप्लिकेट कैसे और क्यों मिल रहे हैं, और उन्हें रोकने का प्रयास करें; फिर डुप्लिकेट को अपनी तालिका से हटा दें - ध्यान से...)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL के साथ सामान्य सुविधाओं को साझा करने वाले व्यक्तियों को फ़्लैग करें

  2. Oracle से SYSDATE के बराबर PostgreSQL क्या है?

  3. ऑरैकल पैकेज के अंदर निर्भरता कैसे खोजें?

  4. R12.2 ऑनलाइन पैचिंग चक्र सारांश

  5. ऑरैकल डेटाबेस व्यू के लिए एक टिप्पणी कैसे बनाएं