Heim >Datenbank >MySQL-Tutorial >Wie verkettet und gruppiert man mehrere Zeilen in Oracle?

Wie verkettet und gruppiert man mehrere Zeilen in Oracle?

Susan Sarandon
Susan SarandonOriginal
2025-01-04 02:56:39565Durchsuche

How to Concatenate and Group Multiple Rows in Oracle?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn