sql >> Databasteknik >  >> RDS >> Oracle

subquery-fel och för många värden med xmllagg

Kombination av xmlagg och xQuery, det är inte enkelt.

select xmlquery('distinct-values(//text())' passing x returning content).getclobVal(),data_type from (
    select   xmlelement(root, xmlagg(XMLELEMENT(e,table_name,','))) x ,data_type
     from user_tab_cols where data_type in ('VARCHAR2','NUMBER')     
     group by data_type
     )

Och för ditt ändamål borde det se ut så här

select 
    app, key_event,  
    xmlquery('distinct-values(//text())' passing xmldoc returning content).getclobVal()
from 
    (select  
         t2.app,  
         coalesce(max(case when language =  2 then description end), 
                  max(case when language = 12 then description end), 
                  max(case when language = 27 then description end), 
                  'NULL') key_event,
         XMLELEMENT(root, xmlagg(XMLELEMENT(e, description, ','))
    ) xmldoc
from 
    table2 t2 
left join 
    table1 t1 on t1.app = t2.app 
group by 
    trans, t2.app
order by trans);

om du kommer att dekomponera den här frågan kommer du att se hur den fungerar.

xquery distinct-values ​​syntax

xmlquery-syntax



  1. Hur man gör överlappande listor med mysql och php

  2. Postgres infoga eller uppdatera trigger WHEN skick (gammal)

  3. ta bort icke-numeriska tecken i en kolumn (tecken varierar), postgresql (9.3.5)

  4. Hur man infogar värden i en tabell med dynamiska kolumner Jdbc/Mysql