2017-08-09 13 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; 

あなたはなぜちょうどそれを照会されない場合、あなたはまだt_aa` `へのアクセス権を持っています。この

+0

によってためXMLTABLE SQLで私を助けてください直接?属性や値を意味しますか?取得しようとしている正確な出力を表示してください。 –

+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()') 

または列postion

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