У меня есть этот XML на основе запросов в Oracle 12c:XMLType: группа по выберите запрос
SELECT XMLELEMENT (
"companiesArray",
XMLAGG (
XMLELEMENT (
"CompanyElement",
XMLFOREST (d.poclcdde AS "companyCode"),
(SELECT XMLELEMENT (
"policiesArray",
XMLAGG (
XMLELEMENT (
"PolicyElement",
XMLELEMENT ("policyNumber", de.polinpol),
XMLELEMENT ("companyCode", de.policdde),
XMLELEMENT ("productCode", de.politipo))))
FROM dtpoli de
WHERE de.polinpol = d.poclnpol AND de.policdde = d.poclcdde))))
FROM dtpocl d
WHERE d.poclcdcl = 202126
Я получаю этот результат:
<companiesArray>
<CompanyElement>
<companyCode>100</companyCode>
<policiesArray>
<PolicyElement>
<policyNumber>1000005</policyNumber>
<companyCode>100</companyCode>
<productCode>02</productCode>
</PolicyElement>
</policiesArray>
</CompanyElement>
<CompanyElement>
<companyCode>100</companyCode>
<policiesArray>
<PolicyElement>
<policyNumber>9902658</policyNumber>
<companyCode>100</companyCode>
<productCode>02</productCode>
</PolicyElement>
</policiesArray>
</CompanyElement>
<CompanyElement>
<companyCode>200</companyCode>
<policiesArray>
<PolicyElement>
<policyNumber>1000005</policyNumber>
<companyCode>200</companyCode>
<productCode>02</productCode>
</PolicyElement>
</policiesArray>
</CompanyElement>
</companiesArray>
Но я хочу, чтобы сгруппировать результаты по companyCode (д .poclcdde). Как это:
<companiesArray>
<CompanyElement>
<companyCode>100</companyCode>
<policiesArray>
<PolicyElement>
<policyNumber>1000005</policyNumber>
<companyCode>100</companyCode>
<productCode>02</productCode>
</PolicyElement>
<PolicyElement>
<policyNumber>9902658</policyNumber>
<companyCode>100</companyCode>
<productCode>02</productCode>
</PolicyElement>
</policiesArray>
</CompanyElement>
<CompanyElement>
<companyCode>200</companyCode>
<policiesArray>
<PolicyElement>
<policyNumber>1000005</policyNumber>
<companyCode>200</companyCode>
<productCode>02</productCode>
</PolicyElement>
</policiesArray>
</CompanyElement>
</companiesArray>
Я пробовал некоторые подходы, но безуспешно. Если я поставлю GROUP BY d.poclcdde
, я получаю две разные записи с одной и той же структурой XML, но разделить на companyCode. Я думаю, что я почти близко, но я скучаю по «ближнему». :) Примечание: Я не хочу, чтобы использовать устаревший код в Oracle 12c Большое спасибо