Heim >Datenbank >MySQL-Tutorial >Wie kann ich Spaltenwerte in DB2-Gruppen mit Komma-Trennzeichen verketten?

Wie kann ich Spaltenwerte in DB2-Gruppen mit Komma-Trennzeichen verketten?

DDD
DDDOriginal
2025-01-09 14:51:42795Durchsuche

How Can I Concatenate Column Values in DB2 Groups with Comma Separators?

DB2: Durch Kommas getrennte Gruppenwerte generieren

In diesem Artikel wird untersucht, ob es in DB2 SQL eine integrierte Funktion gibt, die Spaltenwerte innerhalb von Gruppen verketten und durch Kommas trennen kann. Der Bedarf für diese Funktion entsteht in Situationen, in denen mehrere Zeilen dieselbe Gruppenkennung haben (z. B. ID im Beispiel), andere Spalten jedoch unterschiedliche Werte haben (z. B. Rolle). Die gewünschte Ausgabe besteht darin, die jeder Gruppe zugeordneten Werte in einer durch Kommas getrennten Liste zu verketten.

Lösung: Verwenden Sie die LISTAGG-Funktion

DB2 LUW 9.7 führt die LISTAGG-Funktion ein, die die Werte bestimmter Spalten in jeder Gruppe verketten kann, getrennt durch ein benutzerdefiniertes Trennzeichen. Mit dieser Funktion kann die gewünschte kommagetrennte Ausgabe erreicht werden.

Beispiel:

Betrachten Sie die folgende myTable mit ID- und Kategoriespalten:

<code class="language-sql">create table myTable (id int, category int);

insert into myTable values (1, 1);
insert into myTable values (2, 2);
insert into myTable values (5, 1);
insert into myTable values (3, 1);
insert into myTable values (4, 2);</code>

Um eine durch Kommas getrennte Liste von ID-Werten in jeder Kategoriegruppe zu erstellen, können Sie die folgende Abfrage verwenden:

<code class="language-sql">select category, LISTAGG(id, ', ') as ids from myTable group by category;</code>

Diese Abfrage erzeugt die folgende Ausgabe:

<code>CATEGORY  IDS
--------- -----
1         1, 5, 3
2         2, 4</code>

Zusätzliche Funktionen:

Die LISTAGG-Funktion ermöglicht eine zusätzliche Kontrolle über die Reihenfolge der verbundenen Werte innerhalb jeder Gruppe. Sie können die Sortierreihenfolge der Werte vor dem Zusammenführen steuern, indem Sie die ORDER BY-Klausel in der LISTAGG-Funktion angeben.

Beispielsweise sortiert die folgende Abfrage die ID-Werte in jeder Kategoriegruppe in aufsteigender Reihenfolge:

<code class="language-sql">select category, LISTAGG(id, ', ') WITHIN GROUP(ORDER BY id ASC) as ids from myTable group by category;</code>

Dies führt zu folgender Ausgabe:

<code>CATEGORY  IDS
--------- -----
1         1, 3, 5
2         2, 4</code>

Das obige ist der detaillierte Inhalt vonWie kann ich Spaltenwerte in DB2-Gruppen mit Komma-Trennzeichen 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