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
Freigeben: 2025-01-09 14:51:42
Original
813 Leute haben es durchsucht

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:

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);
Nach dem Login kopieren

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

select category, LISTAGG(id, ', ') as ids from myTable group by category;
Nach dem Login kopieren

Diese Abfrage erzeugt die folgende Ausgabe:

<code>CATEGORY  IDS
--------- -----
1         1, 5, 3
2         2, 4</code>
Nach dem Login kopieren

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:

select category, LISTAGG(id, ', ') WITHIN GROUP(ORDER BY id ASC) as ids from myTable group by category;
Nach dem Login kopieren

Dies führt zu folgender Ausgabe:

<code>CATEGORY  IDS
--------- -----
1         1, 3, 5
2         2, 4</code>
Nach dem Login kopieren

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage