आप इस XPath व्यंजक से देश का मान प्राप्त कर सकते हैं:
/PivotSet/item/column[@name="country"]
और आबादी के लिए एक समान। देना:
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
लेकिन यदि आप प्रत्येक देश के लिए एक कॉलम चाहते हैं, तो यहां से आपको अभी भी pivot
. की आवश्यकता होगी परिणाम प्राप्त करने के लिए डेटा!
जो सवाल पूछता है:
XML पिवट का उपयोग क्यों करें?
अगर ऐसा इसलिए है क्योंकि आप देश के नाम नहीं जानते हैं और कुछ ऐसा कर रहे हैं:
pivot xml (
min ( population )
for country in ( any )
)
इसने आपको कुछ भी नहीं बचाया है! आउटपुट को कॉलम के रूप में प्राप्त करने के लिए आपको अभी भी देश के नाम जानने की जरूरत है।