Maison >base de données >tutoriel mysql >Comment générer des listes séparées par des virgules dans DB2 par groupe ?

Comment générer des listes séparées par des virgules dans DB2 par groupe ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-09 14:41:43223parcourir

How to Generate Comma-Separated Lists in DB2 by Group?

Génération de listes séparées par des virgules dans DB2 à l'aide de LISTAGG

Ce guide montre comment créer des listes de valeurs de colonnes séparées par des virgules et regroupées par une autre colonne dans DB2. La fonction LISTAGG est essentielle pour y parvenir.

Scénario :

Imaginez un tableau avec des colonnes ID et Role, où chaque ID peut avoir plusieurs Roles. L'objectif est de générer une liste de rôles séparés par des virgules pour chaque identifiant unique.

Exemples de données :

ID Role
4555 2
4555 3
4555 4

Sortie souhaitée :

<code>4555, 2,3,4</code>

Solution utilisant LISTAGG :

La fonction

DB2 LISTAGG concatène efficacement les valeurs au sein d'un groupe. La syntaxe est :

<code class="language-sql">LISTAGG(column_name, delimiter) WITHIN GROUP (ORDER BY column_name) OVER (PARTITION BY group_column)</code>

Exemple de requête :

Utilisons un exemple de tableau nommé myTable avec les colonnes id et 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>

Pour obtenir des valeurs id séparées par des virgules pour chaque category :

<code class="language-sql">SELECT
  category,
  LISTAGG(id, ', ') WITHIN GROUP (ORDER BY id ASC) AS ids
FROM myTable
GROUP BY category;</code>

Résultat :

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

Cette requête regroupe les lignes par category, classe les valeurs id dans chaque groupe, puis utilise LISTAGG pour les concaténer en une seule chaîne séparée par des virgules. Le résultat affiche la liste des identifiants séparés par des virgules pour chaque catégorie. Cette approche résout efficacement le problème de la génération de listes séparées par des virgules basées sur le regroupement dans DB2.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn