Vous pouvez obtenir la valeur du pays avec cette expression XPath :
/PivotSet/item/column[@name="country"]
Et un semblable pour la population. Donner :
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
Mais si vous voulez une colonne pour chaque pays, à partir de là, vous devez toujours pivot
les données pour obtenir le résultat !
Ce qui soulève la question :
Pourquoi utiliser un pivot XML ?
Si c'est parce que vous ne connaissez pas les noms des pays et que vous faites quelque chose comme :
pivot xml (
min ( population )
for country in ( any )
)
Cela ne vous a rien épargné ! Vous devez toujours connaître les noms des pays pour obtenir la sortie sous forme de colonnes.