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

Oracle SQL एक ही आईडी के साथ कई पंक्तियों को मर्ज करता है लेकिन आउट ऑफ़ ऑर्डर आइडेंटिफ़ायर

कुछ इस तरह (यह मानते हुए कि इनपुट तालिका में कोई डुप्लिकेट पंक्तियाँ नहीं हैं - यदि हैं, तो समाधान को थोड़ा संशोधित करने की आवश्यकता है)।

समाधान में मैं परीक्षण के लिए test_table बनाता हूं (यह समाधान का हिस्सा नहीं है), और मैं खंड के साथ में एक और तथ्यात्मक उपश्रेणी का निर्माण करता हूं। यह Oracle 11 और इसके बाद के संस्करण में काम करता है। Oracle के पुराने संस्करणों के लिए, सबक्वेरी को prep . के रूप में परिभाषित किया गया है इसके बजाय अंतिम क्वेरी के भीतर एक सबक्वेरी के रूप में स्थानांतरित करने की आवश्यकता है।

with
     test_table ( id, identifiers ) as (
       select '1', '|1|2|'        from dual union all
       select '1', '|2|1|'        from dual union all
       select '2', '|3|A|1|B|'    from dual union all
       select '2', '|B|1|3|A|'    from dual union all
       select '3', '|1|3|2|'      from dual union all
       select '3', '|1|5|'        from dual union all
       select '3', '|2|1|3|'      from dual union all
       select '4', '|AA|BB|1|3A|' from dual union all
       select '4', '|1|3A|AA|BB|' from dual
     ),
     prep ( id, identifiers, token ) as (
       select id, identifiers, regexp_substr(identifiers, '[^|]+', 1, level)
       from   test_table
       connect by level <= regexp_count(identifiers, '\|') - 1
           and prior identifiers = identifiers
           and prior sys_guid() is not null
     )
select distinct id, 
       '|' || listagg(token, '|') within group (order by token) || '|'
                                                as identifiers
from   prep
group by id, identifiers
order by id, identifiers    --  ORDER BY is optional
;

आउटपुट :

ID  IDENTIFIERS
--- --------------------
1   |1|2|
2   |1|3|A|B|
3   |1|2|3|
3   |1|5|
4   |1|3A|AA|BB|

5 rows selected.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. निर्णय कब डेटाबेस में टेबल कॉलम पर इंडेक्स बनाना है?

  2. भौतिकीकृत दृश्य HAVING क्लॉज के साथ तेजी से ताज़ा करें?

  3. सीएसवी फ़ाइल के लिए एक ही समय में अल्पविराम और दोहरे उद्धरण से कैसे बचें?

  4. PL/SQL संग्रह:Oracle डेटाबेस में नेस्टेड तालिका

  5. थोक संग्रह के साथ तालिका फ़ंक्शन अमान्य डेटाटाइप फेंकता है