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

एक एकल तालिका से संयोजन, एक स्तंभ मान द्वारा समूहीकृत

आप इसे पदानुक्रमित प्रश्नों का उपयोग करके कर सकते हैं - यहां पुरानी शैली connect by का उपयोग करके एक है :

WITH your_table AS (SELECT 1 ID, 'AL' state FROM dual UNION ALL
                    SELECT 1 ID, 'AZ' state FROM dual UNION ALL
                    SELECT 1 ID, 'MI' state FROM dual UNION ALL
                    SELECT 2 ID, 'TX' state FROM dual UNION ALL
                    SELECT 2 ID, 'TN' state FROM dual UNION ALL
                    SELECT 2 ID, 'MO' state FROM dual UNION ALL
                    SELECT 2 ID, 'ND' state FROM dual UNION ALL
                    SELECT 3 ID, 'OH' state FROM dual)
SELECT ID,
       state,
       ltrim(SYS_CONNECT_BY_PATH(state, ','), ',') combinations,
       LEVEL
FROM   (SELECT id,
               state,
               count(*) OVER (PARTITION BY id) state_cnt
        FROM your_table)
WHERE  state_cnt = 1
OR     (state_cnt > 1 AND LEVEL > 1)
CONNECT BY PRIOR ID = ID
           AND PRIOR state < state
           AND PRIOR sys_guid() IS NOT NULL;

        ID STATE COMBINATIONS      LEVEL
---------- ----- ------------ ----------
         1 AZ    AL,AZ                 2
         1 MI    AL,AZ,MI              3
         1 MI    AL,MI                 2
         1 MI    AZ,MI                 2
         2 TX    TN,TX                 2
         2 TX    MO,TX                 2
         2 TN    MO,TN                 2
         2 TX    MO,TN,TX              3
         2 ND    MO,ND                 2
         2 TX    MO,ND,TX              3
         2 TN    MO,ND,TN              3
         2 TX    MO,ND,TN,TX           4
         2 TX    ND,TX                 2
         2 TN    ND,TN                 2
         2 TX    ND,TN,TX              3
         3 OH    OH                    1

prior sys_guid() is not null कनेक्ट बाय क्लॉज में शर्त यह सुनिश्चित करने के लिए आवश्यक है कि हम सही पंक्तियों पर लूप कर रहे हैं (यदि आप इसे छोड़ देते हैं, तो परिणाम में कई अतिरिक्त पंक्तियाँ होंगी)।

मैंने आउटपुट में केवल एक ही राज्य के साथ पंक्तियों को बाहर रखा है - सिवाय इसके कि आईडी केवल एक ही राज्य को सूचीबद्ध करता है। आप आउटपुट में एकल राज्यों को शामिल करना चाह सकते हैं या नहीं भी कर सकते हैं, इस स्थिति में, आप विधेय को पूरी तरह से हटा सकते हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. win7 x64 पर php (xampp) के साथ oracle क्लाइंट 11.2 का उपयोग कैसे करें?

  2. Oracle शीर्ष 1 के साथ स्थिति में शामिल हों

  3. 4 पीएल/एसक्यूएल बेनामी ब्लॉक उदाहरण

  4. उपयोगकर्ता सुरक्षा के लिए Oracle में प्रोफाइल बनाना

  5. एप्लिकेशन बनाम डेटाबेस निवासी कनेक्शन पूल