2017-08-09 42 views
0
<PivotSet> 
<item> 
<column name = "B">A</column> 
<column name ="SUM(A)">24</column> 
</item> 
<item> 
<column name = "B">B</column> 
<column name = "SUM(A)">15</column> 
</item> 
<item> 
<column name = "B">C</column> 
<column name = "SUM(A)">18</column> 
</item> 
<item> 
<column name = "B">D</column> 
<column name = "SUM(A)">21</column> 
</item> 
</PivotSet> 

我有这个XML列。我试图读取XML标记中的值A使用Oracle XMLTABLE获取属性值

<column name = "B">A</column> 

在SQL下面生成上面的XML。

select xmlserialize(content t.B_XML) from t_aa 
pivot xml(
sum(A) for B in (any) 
) t; 

能否请您帮我XMLTABLE SQL这个

+0

你还可以访问't_aa'如果是这样,为什么不只是查询直?你的意思是属性还是值?请显示您正在尝试获得的确切输出。 –

+0

@AlexPoole - 我需要pviot格式的数据。所以我在oracle中使用PIVOT XML函数并生成XML o/p。从那我试图通过XMLTABLE函数读取记录。 – royal23enfield

回答

0
select * from xmltable('/PivotSet/item' passing xmltype(' 
<PivotSet> 
<item> 
<column name = "B">A</column> 
<column name ="SUM(A)">24</column> 
</item> 
<item> 
<column name = "B">B</column> 
<column name = "SUM(A)">15</column> 
</item> 
<item> 
<column name = "B">C</column> 
<column name = "SUM(A)">18</column> 
</item> 
<item> 
<column name = "B">D</column> 
<column name = "SUM(A)">21</column> 
</item> 
</PivotSet>') columns 
    name varchar2(100) path 'column[@name eq "B" ]/text()', 
    sum number path 'column[@name eq "SUM(A)" ]/number()') 

或列现在的位置

columns 
    name varchar2(100) path 'column[1]/text()', 
    sum number path 'column[2]/number()' 
)