sql >> Database >  >> RDS >> Oracle

subquery-fout en te veel waarden met xmllagg

Combinatie van xmlagg en xQuery, het is niet eenvoudig.

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
     )

En voor jouw doel zou het er zo uit moeten zien

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);

als je deze zoekopdracht ontbindt, zul je zien hoe het werkt.

xquery distinct-values ​​syntaxis

xmlquery-syntaxis



  1. cx_Oracle en het gegevensbronparadigma

  2. MYSQL:Traditioneel &Vereenvoudigd Chinees invoegen in dezelfde 'cel'

  3. RSA in Android produceert juiste sleutels maar verkeerde decodering

  4. Installeer en maak verbinding met PostgreSQL 10 op Ubuntu 16.04