2017-08-09 93 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()' 
)