Bạn có thể nhận giá trị quốc gia với biểu thức XPath này:
/PivotSet/item/column[@name="country"]
Và một cái tương tự cho dân số. Trao tặng:
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
Nhưng nếu bạn muốn một cột cho mỗi quốc gia, từ đây bạn vẫn cần phải pivot
dữ liệu để có được kết quả!
Điều nào đặt ra câu hỏi:
Tại sao lại sử dụng trục XML?
Nếu đó là vì bạn không biết tên quốc gia và đang làm những việc như:
pivot xml (
min ( population )
for country in ( any )
)
Điều này đã không giúp bạn bất cứ điều gì! Bạn vẫn cần biết tên quốc gia để lấy đầu ra dưới dạng cột.