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

Oracle LISTAGG फ़ंक्शन का उपयोग करके डुप्लिकेट को हटा दें

चूंकि टिप्पणी में लिंक किए गए उत्तर मेरे समाधान का स्वाद प्रदान नहीं करते हैं, मैं इसे वैसे भी पोस्ट करूंगा।

मैं केवल table_b का उपयोग करूंगा/करूंगी अवधारणा दिखाने के लिए डमी डेटा के साथ, आप आसानी से अपना जॉइन आदि जोड़ सकते हैं:

with table_b as ( -- dummy data
 select 'name'||mod(level,3) name
        ,mod(level,3) id
   from dual
  connect by level < 10
 union all
 select 'name'||mod(level,2) name
        ,mod(level,3) id
   from dual
  connect by level < 10
)
select id
      ,RTRIM (
              XMLAGG (
                      XMLELEMENT (E,XMLATTRIBUTES (name|| ',' AS "Seg")
                      )
                     ORDER BY name ASC
              ).EXTRACT ('./E[not(@Seg = preceding-sibling::E/@Seg)]/@Seg'),
              ','
             ) AS "Product Name"
       ,LISTAGG(b.name, ',') WITHIN GROUP (ORDER BY b.name) AS "Product Name with dups"
  from table_b b
group by id;

(आइडिया https://forums.oracle.com/forums/thread.jspa?messageID=9634767&tstart=0#9943367) से लिया गया है




  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. System.Data.OracleClient को Oracle क्लाइंट सॉफ़्टवेयर संस्करण 8.1.7 की आवश्यकता है

  3. जावा में मान -2 की ExecuteBatch विधि वापसी सरणी

  4. ओआरए-27154 / ओआरए-27146

  5. Oracle PL/SQL - संग्रह (नेस्टेड टेबल्स)