Mehrere Zeilen in Oracle verketten und gruppieren
In einem Szenario, in dem Sie eine Tabelle mit mehreren Zeilen haben, die verkettet und gruppiert werden müssen, verwenden Sie der LISTAGG-Funktion in Oracle 11g bietet eine einfache Lösung:
SELECT group_name, LISTAGG(name, ', ') WITHIN GROUP (ORDER BY GROUP) AS "names" FROM name_table GROUP BY group_name
Die LISTAGG-Funktion aggregiert mehrere Werte aus einer Gruppe von Zeilen und trennt sie durch ein angegebenes Trennzeichen (hier „,“). Es vereinfacht den Prozess der Verkettung und Gruppierung und liefert das gewünschte Ergebnis.
Für Datenbanken vor Oracle 11g ist ein alternativer Ansatz mit Analyse verfügbar:
SELECT grp, ltrim(max(sys_connect_by_path(name, ',' )), ',') AS scbp FROM ( SELECT name, grp, row_number() OVER (PARTITION BY grp ORDER BY name) AS rn FROM tab ) START WITH rn = 1 CONNECT BY PRIOR rn = rn - 1 AND PRIOR grp = grp GROUP BY grp ORDER BY grp
Diese Abfrage nutzt CONNECT BY -Klausel und die Analysefunktion row_number(), um Werte iterativ zu verketten und zu gruppieren und die gleiche Ausgabe wie die LISTAGG-Methode zu erzeugen.
Das obige ist der detaillierte Inhalt vonWie verkettet und gruppiert man mehrere Zeilen in Oracle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!