在枢轴 xml 之后将 xml 类型解析为 table
Parse xmltype into table after pivot xml
我在枢轴 xml 之后有 return 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>
我需要 table 看起来像
Ukraine_population|Germany_population|...
12345 |67891 |...
您可以使用此 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 )
)
这并没有为您节省任何东西!您仍然需要知道国家/地区名称才能将输出作为列。
我在枢轴 xml 之后有 return 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>
我需要 table 看起来像
Ukraine_population|Germany_population|...
12345 |67891 |...
您可以使用此 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 )
)
这并没有为您节省任何东西!您仍然需要知道国家/地区名称才能将输出作为列。