Heim >Datenbank >MySQL-Tutorial >Wie kann ich Spaltenwerte in DB2-Gruppen mit Komma-Trennzeichen verketten?
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!