sql >> Database >  >> RDS >> Oracle

Ontleden xmltype in tabel na pivot xml

U kunt de landwaarde krijgen met deze XPath-uitdrukking:

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

En een soortgelijke voor de bevolking. Geven:

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     

Maar als u een kolom voor elk land wilt, moet u vanaf hier nog steeds pivot de gegevens om het resultaat te krijgen!

Wat de vraag oproept:

Waarom een ​​XML-pivot gebruiken?

Als het is omdat je de namen van de landen niet kent en iets doet als:

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

Dit heeft je niets bespaard! U moet nog steeds de landnamen weten om de uitvoer als kolommen te krijgen.




  1. Selecteer gegevens uit verschillende kolommen en twee tabellen

  2. orakelprocedure met case Het hangt af van parameter

  3. AttributeError:__exit__ op python 3.4

  4. ORACLE:Gematerialiseerde weergave werkt niet bij gebruik van LEFT JOIN