xmlagg中的多个xmlagg
我有一个问题,我需要创建一个xml,其格式如下:xmlagg中的多个xmlagg,xml,oracle,plsql,aggregate-functions,Xml,Oracle,Plsql,Aggregate Functions,我有一个问题,我需要创建一个xml,其格式如下: <Root> <Bank>--Can be repeated <ID> <Credit>--Can be repeated <INFO> --Can be repeated </INFO> <Credit> </ID> </Bank> </Root> --可以
<Root>
<Bank>--Can be repeated
<ID>
<Credit>--Can be repeated
<INFO> --Can be repeated
</INFO>
<Credit>
</ID>
</Bank>
</Root>
--可以重复
--可以重复
--可以重复
这就像xmlagg,变成xmlagg变成xmlagg
我有一张这样的桌子:
BANK| ID | CREDIT | INFO ||
1 A1 B1 C1
1 A1 B1 C2
1 A1 B1 C3
1 A1 B2 D1
1 A1 B2 D2
1 A1 B1 C1
2 X1 Y1 Z1
银行|身份|信用|信息||
1 A1 B1 C1
1 A1 B1 C2
1 A1 B1 C3
1 A1 B2 D1
1 A1 B2 D2
1 A1 B1 C1
2 X1 Y1 Z1
我想要像这样的XML:<Root>
<Bank> 1 </Bank>
<ID> A1 </ID>
<CREDIT> B1
<INFO> C1 </INFO>
<INFO> C2 </INFO>
<INFO> C2 </INFO>
</CREDIT>
<CREDIT> B2
<INFO> D1 </INFO>
<INFO> D2 </INFO>
</CREDIT>
</ID>
<BANK> 2 </BANK>
<ID> X1 </ID>
<CREDIT> Y1</CREDIT>
<INFO> Z1 </INFO>
</Root>
1.
A1
地下一层
C1
C2
C2
地下二层
D1
D2
2.
X1
Y1
Z1
我希望你明白我的意思,谢谢 您的描述非常模糊,xml定义和示例不一致。还假设xml中的数据应该是不同的
WITH src (bank, id, credit, info) AS (
SELECT 1, 'A1', 'B1', 'C1' FROM dual UNION ALL
SELECT 1, 'A1', 'B1', 'C2' FROM dual UNION ALL
SELECT 1, 'A1', 'B1', 'C3' FROM dual UNION ALL
SELECT 1, 'A1', 'B2', 'D1' FROM dual UNION ALL
SELECT 1, 'A1', 'B2', 'D2' FROM dual UNION ALL
SELECT 1, 'A1', 'B1', 'C1' FROM dual UNION ALL
SELECT 2, 'X1', 'Y1', 'Z1' FROM dual
),
credit_data AS (
SELECT
bank,
id,
XMLELEMENT("Credit", credit,
XMLAGG(
XMLELEMENT(INFO, info)
)
) child_nodes
FROM
(SELECT DISTINCT * FROM src)
GROUP BY
bank, id, credit
),
bank_data AS (
SELECT
XMLELEMENT("Bank", bank,
XMLELEMENT("ID", id,
XMLAGG(
child_nodes
)
)
) bank_nodes
FROM
credit_data
GROUP BY
bank, id
)
SELECT
XMLSERIALIZE(
DOCUMENT
XMLELEMENT("Root", NULL,
XMLAGG(
bank_nodes
)
)
INDENT SIZE = 2
) xml
FROM
bank_data;