Ich habe folgendes als Teil einer größeren Select-Abfrage, die soweit funktioniert und mir hilft, nur eine Zeile für jeden Datensatz in Spalte1 zu bekommen.Oracle SQL: Xmlagg mit mehreren Xmlelement/Spalten in Select
Dies gibt jedoch ein separates XML-Element für Spalte2, Spalte3 und Spalte4 zurück, während ich sie alle in einer Spalte brauche.
Kann mir jemand sagen, wie ich die XML-Elemente für diese drei Spalten in einem kombinieren kann?
Als ich das erforschte, bin ich auf XMLFOREST
gestoßen, aber das scheint keine weit verbreitete Funktion zu sein, und ich bin mir nicht sicher, wie ich es hier anwenden soll.
Meine Anfrage (relevanter Teil):
SELECT
a.column1 AS Column1
, RTRIM(XMLAGG(XMLELEMENT(e, b.column2) ORDER BY b.column2).EXTRACT('//text()'), ',') AS Column2
, RTRIM(XMLAGG(XMLELEMENT(e, b.column3) ORDER BY b.column3).EXTRACT('//text()'), ',') AS Column3
, RTRIM(XMLAGG(XMLELEMENT(e, b.column4) ORDER BY b.column4).EXTRACT('//text()'), ',') AS Column4
, c.column5 AS Column5
/* ... */
FROM
/* ... */
Vielen Dank im Voraus für jede Hilfe,
Mike
Sie werden schneller bessere Antworten bekommen, wenn Sie die Ausgabe enthalten, die Sie erhalten und die Ausgabe, die Sie wollen. – jeff6times7
@ jeff6times7: Danke. Ich habe dies jetzt zum Beitrag hinzugefügt. Grundsätzlich versuche ich die Daten aus den Spalten 2, 3 und 4 für jeden eindeutigen Datensatz in Spalte 1 zu kombinieren. Der Unterschied zur aktuellen Ausgabe besteht darin, dass ich dies in einer Spalte kombinieren möchte, anstatt drei separate Spalten dafür zu haben. – keewee279
Es könnte nett sein, wenn Sie Beispieleingabe-XML für die gewünschte Ausgabe beigefügt hatten. – krokodilko