Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Hilangkan duplikat menggunakan fungsi Oracle LISTAGG

Karena jawaban yang ditautkan di komentar tidak memberikan rasa solusi saya, saya akan tetap mempostingnya.

Saya hanya akan menggunakan table_b dengan data dummy untuk menunjukkan konsepnya, Anda dapat dengan mudah menambahkan join Anda, dll.:

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;

(Ide diambil dari 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. Struktur pohon dalam sql di Oracle. Cara menampilkan pohon, simpul anak, dan simpul induk di SQL Oracle

  2. Kembalikan baris dengan nilai maksimal satu kolom per grup

  3. Hasilkan tanggal acak di Oracle dengan DBMS_RANDOM

  4. Kapan Oracle mengindeks nilai kolom nol?

  5. Jumlah baris yang terpengaruh oleh UPDATE di PL/SQL