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

SQL:क्वेरी में डुप्लिकेट पंक्तियों को निकालने की आवश्यकता है

आपके द्वारा दिए गए व्यवसाय के अलावा आपके सभी व्यावसायिक नियमों को नहीं जानते, यहां एक अधिक सामान्य समाधान है।

संभावित स्थितियों के साथ एक और तालिका बनाएं (या शायद आपके डेटा मॉडल में पहले से ही एक है):

CREATE TABLE status_rank (
   status   VARCHAR2(100) NOT NULL,
   rank     NUMBER NOT NULL,
   PRIMARY KEY (status_name)
);

इस तालिका का उपयोग वरीयता क्रम में स्थितियों को रैंक करने के लिए किया जाता है। दूसरे शब्दों में, यदि डुप्लीकेट के मामले में "अस्वीकृत" पर "माफी अनुरोधित" का चयन किया जाना चाहिए, तो छूट के लिए 1 और अस्वीकार के लिए 2 की प्राथमिकता का उपयोग करें।

तो अब क्वेरी इस अतिरिक्त रैंकिंग तालिका का उपयोग कर सकती है:

SELECT b.docid, r.status
  FROM b,
       status_rank r,
       (SELECT b.id, min(r.rank)
          FROM b, status_rank r
         WHERE b.status = r.status
         GROUP BY id) s
 WHERE b.docid = s.docid
   AND r.rank = s.rank
   AND b.status = r.status;

वास्तव में क्वेरी करने के कई तरीके हैं, लेकिन यह आपको सामान्य विचार दिखाना चाहिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल स्क्रिप्ट में 'टेबल बनाएं' केवल 1 क्रिएट स्टेटमेंट का उपयोग करते समय 3 बार निष्पादित क्यों होता है?

  2. कार्यों के बिना पीएल/एसक्यूएल आधार रूपांतरण

  3. मूल्यों के क्रम को ध्यान में रखते हुए समूह पंक्तियाँ

  4. Oracle डेटाबेस में PL/SQL संग्रह विधियों का परिचय

  5. SQL में, मैं 5!56 के हर संभव अद्वितीय संयोजन को कैसे उत्पन्न कर सकता हूँ?