2017-08-09 3 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> 

J'ai cette colonne XML. Im essayant de lire la valeur A dans la balise XMLUtilisation de Oracle XMLTABLE pour obtenir la valeur d'attribut

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

Ci-dessous SQL génère le XML ci-dessus.

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

Pouvez-vous s'il vous plaît me aider avec XMLTABLE SQL pour cette

+0

Avez-vous encore accès à 't_aa' si oui, pourquoi pas seulement requête directement? Et voulez-vous dire des attributs ou des valeurs? S'il vous plaît montrer la sortie exacte que vous essayez d'obtenir. –

+0

@AlexPoole - Je veux les données au format pviot. J'utilise donc la fonction PIVOT XML dans Oracle et la génération de XML o/p. De cela, j'essaie de lire les enregistrements via la fonction XMLTABLE. – royal23enfield

Répondre

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

ou par colonne postion

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