sql >> Databáze >  >> RDS >> Oracle

Za pivot xml analyzujte xmltype do tabulky

Hodnotu země můžete získat pomocí tohoto výrazu XPath:

/PivotSet/item/column[@name="country"]

A podobný pro obyvatelstvo. Dávání:

with x as (
  select xmltype ( 
'<PivotSet>
<item>
        <column name = "country">Ukraine</column>
        <column name = "population">12345</column>
    </item>
    <item>
        <column name = "country">Germany</column>
        <column name = "population">67891</column>
    </item>
</PivotSet>' 
) x from dual
)
select xt.* from x, xmltable (
  '/PivotSet/item'
  passing x.x 
  columns 
    country varchar2(100) 
      path 'column[@name="country"]',
    population int
      path 'column[@name="population"]'
) xt

COUNTRY   POPULATION   
Ukraine        12345         
Germany        67891     

Pokud ale chcete sloupec pro každou zemi, musíte odtud ještě pivot data, abyste získali výsledek!

Což vyvolává otázku:

Proč používat pivot XML?

Pokud je to proto, že neznáte názvy zemí a děláte něco jako:

pivot xml ( 
  min ( population ) 
    for country in ( any ) 
)

Tohle ti nic nezachránilo! Stále potřebujete znát názvy zemí, abyste získali výstup jako sloupce.




  1. Chyba při použití příkazu copy v Postgresu (CHYBA:neplatná vstupní syntaxe pro typ datum:)

  2. Proč explicitní zamykání predikátu MySQL neumožňuje příkazy INSERT mimo predikátový zámek

  3. zobrazení neagregovaného sloupce ve skupině podle dotazu v SQL

  4. Oracle Rozdíly mezi NVL a Coalesce