Oracle SQL: Kombinieren von Spaltenwerten über mehrere Zeilen mit LISTAGG
Oracle bietet mehrere Möglichkeiten, Daten aus mehreren Zeilen in einer einzigen Zeichenfolge zu kombinieren. Die LISTAGG
-Funktion ist eine besonders effektive Methode.
Stellen Sie sich vor, Sie haben zwei Tabellen: Tabelle A (mit einer Spalte PID
, die die Werte A, B, C enthält) und Tabelle B (mit den Spalten PID
, SEQ
und Desc
). Das Ziel besteht darin, die Desc
-Werte aus Tabelle B, gruppiert nach PID
und geordnet nach SEQ
, in einer einzigen Description
-Spalte im Ergebnissatz zu verketten.
So erreichen Sie dies mit LISTAGG
:
<code class="language-sql">SELECT pid, LISTAGG(Desc, ' ') WITHIN GROUP (ORDER BY seq) AS description FROM B GROUP BY pid;</code>
Diese Abfrage verwendet LISTAGG
, um die Desc
-Werte für jedes eindeutige PID
zu aggregieren, sie nach der SEQ
-Spalte zu ordnen und ein Leerzeichen ('') als Trennzeichen zu verwenden. Die Ausgabe zeigt jedes PID
mit seinen entsprechenden verketteten Desc
-Werten in der Spalte description
.
Um nur die in Tabelle A vorhandenen PID
s einzubeziehen, verbinden Sie diese Abfrage einfach mit Tabelle A:
<code class="language-sql">SELECT a.pid, LISTAGG(b.Desc, ' ') WITHIN GROUP (ORDER BY b.seq) AS description FROM A a JOIN B b ON a.pid = b.pid GROUP BY a.pid;</code>
Wichtige Überlegung: LISTAGG
funktioniert normalerweise korrekt mit VARCHAR2
Datentypen.
Das obige ist der detaillierte Inhalt vonWie kann ich mit LISTAGG Spaltenwerte aus mehreren Zeilen in Oracle SQL verketten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!