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
Libérer: 2025-01-09 14:41:43
original
181 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

Résultat :

<code>CATEGORY | IDS
---------+-----
       1 | 1, 3, 5
       2 | 2, 4</code>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal