Heim > Datenbank > MySQL-Tutorial > Wie kombiniere ich mehrere Zeilen in einer durch Kommas getrennten Liste in Oracle?

Wie kombiniere ich mehrere Zeilen in einer durch Kommas getrennten Liste in Oracle?

Barbara Streisand
Freigeben: 2025-01-19 17:51:10
Original
856 Leute haben es durchsucht

How to Combine Multiple Rows into a Comma-Delimited List in Oracle?

Zeilen in durch Kommas getrennte Listen in Oracle zusammenfassen

Oracle bietet mehrere Funktionen zum Konsolidieren mehrerer Zeilen in einer einzigen Zeichenfolge mit durch Kommas getrennten Werten. Dies ist eine häufige Aufgabe bei der Datenaggregation und Berichtserstellung. Die bekanntesten Funktionen sind WM_CONCAT und LISTAGG.

Verwenden von WM_CONCAT

Verfügbar in Oracle-Versionen vor 11.2, WM_CONCAT verkettet Werte aus mehreren Zeilen mithilfe eines angegebenen Trennzeichens. Um beispielsweise eine durch Kommas getrennte Liste von Tabellennamen innerhalb eines Schemas zu generieren:

<code class="language-sql">SELECT WM_CONCAT(table_name)
FROM user_tables;</code>
Nach dem Login kopieren

Beschäftigung LISTAGG

Eingeführt in Oracle 11.2, LISTAGG bietet gegenüber WM_CONCAT erweiterte Funktionen. Es ermöglicht eine bessere Kontrolle, einschließlich der Angabe von Trennzeichen und der Behandlung von NULL-Werten. Das folgende Beispiel erstellt eine durch Kommas getrennte Liste von Tabellennamen, wobei NULL-Einträge weggelassen werden:

<code class="language-sql">SELECT LISTAGG(table_name, ', ') WITHIN GROUP (ORDER BY table_name)
FROM user_tables;</code>
Nach dem Login kopieren

Praktische Anwendung

Stellen Sie sich eine Abfrage vor, die für jede Person mehrere Staatsbürgerschaftsdatensätze abruft. Um redundante Einträge zu vermeiden, kann LISTAGG als Unterabfrage verwendet werden, um eine einzelne durch Kommas getrennte Staatsbürgerschaftsliste pro Person zu generieren:

<code class="language-sql">SELECT person_id,
       (SELECT LISTAGG(citizenship, ', ') WITHIN GROUP (ORDER BY citizenship)
        FROM citizenship
        WHERE person_id = t.person_id) AS citizenship_list
FROM person t;</code>
Nach dem Login kopieren

Dies gibt eine einzelne Zeile pro Person zurück, mit einer durch Kommas getrennten Zeichenfolge ihrer Staatsbürgerschaften in der Spalte citizenship_list.

Zusammenfassung

WM_CONCAT und LISTAGG bieten robuste und vielseitige Möglichkeiten, mehrere Zeilen in durch Kommas getrennten Listen in Oracle zusammenzufassen. Diese Funktionen optimieren die Datenbearbeitung und verbessern die Klarheit von SQL-Abfragen.

Das obige ist der detaillierte Inhalt vonWie kombiniere ich mehrere Zeilen in einer durch Kommas getrennten Liste in Oracle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage