Heim >Datenbank >MySQL-Tutorial >Wie kann ich mit LISTAGG Spaltenwerte aus mehreren Zeilen in Oracle SQL verketten?

Wie kann ich mit LISTAGG Spaltenwerte aus mehreren Zeilen in Oracle SQL verketten?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-23 15:11:12189Durchsuche

How Can I Concatenate Column Values from Multiple Rows in Oracle SQL Using LISTAGG?

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 PIDs 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!

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