Parse xmltype into table after pivot xml Parse xmltype into table after pivot xml oracle oracle

Parse xmltype into table after pivot xml


You can get the country value with this XPath expression:

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

And a similar one for the population. Giving:

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"]') xtCOUNTRY   POPULATION   Ukraine        12345         Germany        67891     

But if you want a column for each country, from here you still need to pivot the data to get the result!

Which begs the question:

Why use an XML pivot?

If it's because you don't know the country names and are doing something like:

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

This hasn't saved you anything! You still need to know the country names to get the output as columns.