[英]Merge nodes in XML (Oracle)
I wrote this query: 我写了这个查询:
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;
It generates the document: 它生成文档:
<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>
I would like to combine nodos with the same attributes ("New York"), exactly, the result was so: 我想将nodos与相同的属性(“纽约”)结合起来,确切地说,结果如此:
<Cities>
<!-- -->
<City Title="New York">
<Readers>
<Reader FirstName="JON" SecondName="SHOW" />
<Reader FirstName="Poll" SecondName="Aeron" />
</Readers>
</City>
</Cities>
Data for this sql query: http://sqlfiddle.com/#!4/2d231 此SQL查询的数据: http : //sqlfiddle.com/#!4/2d231
This should do the trick: 这应该做的伎俩:
SELECT xmlagg(xmlelement("Cities", xmlattributes(c.city as "Title"),
xmlelement("Readers", xmlagg(xmlelement("Reader", xmlattributes(r.firstname,r.secondname)))))) cities_xml
from reader r,
xmltable('/Address'
passing r.address
columns city varchar2(20) path 'City[1]') c
group by c.city;
<Cities Title="Boca Juniors">
<Readers>
<Reader FIRSTNAME="Julio " SECONDNAME="Pedro"></Reader>
</Readers>
</Cities>
<Cities Title="Kharkiv">
<Readers>
<Reader FIRSTNAME="Slavik" SECONDNAME="Romanov"></Reader>
</Readers>
</Cities>
<Cities Title="London">
<Readers>
<Reader FIRSTNAME="Johnny " SECONDNAME="Smith"></Reader>
</Readers>
</Cities>
<Cities Title="New York">
<Readers>
<Reader FIRSTNAME="JON" SECONDNAME="SHOW"></Reader>
<Reader FIRSTNAME="Poll" SECONDNAME="Aeron"></Reader>
</Readers>
</Cities>
Btw, I've swapped your EXTRACTVALUE
for XMLTABLE
, as both EXTRACT and EXTRACTVALUE are deprecated in 10g and above. 顺便说一句,我已经将你的
EXTRACTVALUE
交换为XMLTABLE
,因为EXTRACT和EXTRACTVALUE都在10g及以上的版本中被弃用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.