I have XML data stored in each row of field in XMLTYPE, the first row of the XML field should be:
<cdata>
<r> <year>2009</year>
<month>Jan</month>
<day>1</day>
<data>1180</data>
</r>
</cdata>
and the second row of the XML field should be:
<cdata>
<r>
<year>2009</year>
<month>Jan</month>
<day>2</day>
<data>1280</data>
</r>
</cdata>
and the belowed codes are also modified into the upper example (each data stored in a row and embedded a 'cdata' root element.
<r>
<year>2009</year>
<month>Jan</month>
<day>3</day>
<data>1380</data>
</r>
<r>
<year>2009</year>
<month>Feb</month>
<day>1</day>
<data>2180</data>
</r>
<r>
<year>2009</year>
<month>Feb</month>
<day>2</day>
<data>2280</data>
</r>
<r>
<year>2009</year>
<month>Feb</month>
<day>3</day>
<data>2380</data>
</r>
<r>
<year>2010</year>
<month>Jan</month>
<day>1</day>
<data>1181</data>
</r>
<r>
<year>2010</year>
<month>Jan</month>
<day>2</day>
<data>1281</data>
</r>
<r>
<year>2010</year>
<month>Jan</month>
<day>3</day>
<data>1381</data>
</r>
<r>
<year>2010</year>
<month>Feb</month>
<day>1</day>
<data>2181</data>
</r>
<r>
<year>2010</year>
<month>Feb</month>
<day>2</day>
<data>2281</data>
</r>
<r>
<year>2010</year>
<month>Feb</month>
<day>3</day>
<data>2381</data>
</r>
</cdata>
now, i use this sql:
SELECT X.*
FROM xmltest,
XMLTABLE ('$d/cdata/r' passing xmldoc as "d"
COLUMNS
year integer path 'year',
month varchar(3) path 'month',
day varchar(2) path 'day',
data float path 'data'
) AS X
I can retrieve the value in record, and the question is how can I aggregate the total of 'data' element which is in 2009/Jan? and what is the code that I can use to aggregate the 'data' element in all of 2009?