sql >> Databasteknik >  >> RDS >> Oracle

Eliminera dubbletter med Oracle LISTAGG-funktionen

Eftersom de länkade svaren i kommentaren inte ger min smak av lösning, lägger jag upp det ändå.

Jag använder bara table_b med dummydata för att visa konceptet kan du enkelt lägga till din anslutning etc.:

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;

(Idén hämtad från https://forums.oracle.com/forums/thread.jspa?messageID=9634767&tstart=0#9943367)




  1. Varför misslyckas min ODBC-anslutning när jag kör en SSIS-laddning i Visual Studio men inte när jag kör samma paket med Execute Package Utility

  2. Oracle NULLIF() funktion

  3. Återställer SQL Server Master Database

  4. vad är ett bra sätt att horisontell shard i postgresql