Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich durch Kommas getrennte Listen in DB2 nach Gruppen?
Generieren von durch Kommas getrennten Listen in DB2 mit LISTAGG
Diese Anleitung zeigt, wie Sie durch Kommas getrennte Listen von Spaltenwerten erstellen, die nach einer anderen Spalte in DB2 gruppiert sind. Die LISTAGG
-Funktion ist der Schlüssel zum Erreichen dieses Ziels.
Szenario:
Stellen Sie sich eine Tabelle mit den Spalten ID
und Role
vor, wobei jede ID
mehrere Roles
haben kann. Das Ziel besteht darin, für jede eindeutige ID eine durch Kommas getrennte Liste von Rollen auszugeben.
Beispieldaten:
ID | Role |
---|---|
4555 | 2 |
4555 | 3 |
4555 | 4 |
Gewünschte Ausgabe:
<code>4555, 2,3,4</code>
Lösung mit LISTAGG:
Die LISTAGG
-Funktion von DB2 verkettet Werte innerhalb einer Gruppe effizient. Die Syntax lautet:
<code class="language-sql">LISTAGG(column_name, delimiter) WITHIN GROUP (ORDER BY column_name) OVER (PARTITION BY group_column)</code>
Beispielabfrage:
Verwenden wir eine Beispieltabelle mit dem Namen myTable
mit den Spalten id
und category
:
<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 durch Kommas getrennte id
Werte für jedes category
zu erhalten:
<code class="language-sql">SELECT category, LISTAGG(id, ', ') WITHIN GROUP (ORDER BY id ASC) AS ids FROM myTable GROUP BY category;</code>
Ergebnis:
<code>CATEGORY | IDS ---------+----- 1 | 1, 3, 5 2 | 2, 4</code>
Diese Abfrage gruppiert Zeilen nach category
, ordnet die id
-Werte innerhalb jeder Gruppe und verwendet dann LISTAGG
, um sie zu einer einzigen durch Kommas getrennten Zeichenfolge zu verketten. Das Ergebnis zeigt die durch Kommas getrennte Liste der IDs für jede Kategorie. Dieser Ansatz löst effektiv das Problem der Generierung durch Kommas getrennter Listen basierend auf der Gruppierung in DB2.
Das obige ist der detaillierte Inhalt vonWie erstelle ich durch Kommas getrennte Listen in DB2 nach Gruppen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!