【发布时间】:2015-08-04 12:50:57
【问题描述】:
我写了这个查询:
WITH Cities
AS(
SELECT DISTINCT EXTRACTVALUE(Address,'(//City)[1]') AS City
FROM Reader
)
SELECT XMLAGG(XMLELEMENT("Cities",
XMLATTRIBUTES(c.City AS "Title"),
XMLELEMENT("Readers",
XMLELEMENT("Reader",XMLATTRIBUTES(r.FirstName,r.SecondName)))))
FROM Reader r,Cities c
WHERE EXTRACTVALUE(r.Address,'(//City)[1]') = c.City;
它生成文档:
<Cities Title="New York">
<Readers>
<Reader FIRSTNAME="JON" SECONDNAME="SHOW"></Reader>
</Readers>
</Cities>
<Cities Title="New York">
<Readers>
<Reader FIRSTNAME="Poll" SECONDNAME="Aeron"></Reader>
</Readers>
</Cities>
<Cities Title="Kharkiv">
<Readers>
<Reader FIRSTNAME="Slavik" SECONDNAME="Romanov"></Reader>
</Readers>
</Cities>
<Cities Title="Boca Juniors">
<Readers>
<Reader FIRSTNAME="Julio " SECONDNAME="Pedro"></Reader>
</Readers>
</Cities>
<Cities Title="London">
<Readers>
<Reader FIRSTNAME="Johnny " SECONDNAME="Smith"></Reader>
</Readers>
</Cities>
我想将具有相同属性(“纽约”)的节点组合起来,结果是这样的:
<Cities>
<!-- -->
<City Title="New York">
<Readers>
<Reader FirstName="JON" SecondName="SHOW" />
<Reader FirstName="Poll" SecondName="Aeron" />
</Readers>
</City>
</Cities>
此 sql 查询的数据:http://sqlfiddle.com/#!4/2d231
【问题讨论】:
标签: sql xml database oracle oracle11g