Maison >base de données >tutoriel mysql >Comment générer des valeurs séparées par des virgules à partir de données groupées dans DB2 SQL ?

Comment générer des valeurs séparées par des virgules à partir de données groupées dans DB2 SQL ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-09 14:33:42680parcourir

How to Generate Comma-Separated Values from Grouped Data in DB2 SQL?

Les données groupées DB2 SQL génèrent des valeurs séparées par des virgules

Question : Existe-t-il une fonction dans DB2 SQL qui peut générer directement des valeurs séparées par des virgules de données de colonnes groupées ?

Scénario : Nous avons une table avec une colonne ID et une colonne Rôle. Il peut y avoir plusieurs lignes pour le même ID, chaque ligne représentant un rôle différent pour cet ID. L'objectif est de concaténer ces rôles dans une chaîne séparée par des virgules pour chaque identifiant unique.

Exemple :

<code>ID   | Role
------------
4555 | 2
4555 | 3
4555 | 4</code>

Résultat attendu :

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

Réponse :

DB2 LUW 9.7 introduit une nouvelle fonction LITAGG qui résout ce problème.

Grammaire :

<code>LISTAGG(expression, delimiter) WITHIN GROUP (ORDER BY expression ASC|DESC)</code>

Instructions :

  • expression : Colonne à rejoindre
  • délimiteur : Le délimiteur utilisé entre les valeurs concaténées (par exemple,,)

Utilisation :

Pour récupérer les valeurs de rôle séparées par des virgules pour chaque ID unique, vous pouvez utiliser la requête suivante :

<code>SELECT id, LISTAGG(role, ', ') WITHIN GROUP (ORDER BY role ASC) AS roles
FROM myTable
GROUP BY id;</code>

Sortie :

<code>ID   | roles
------------
4555 | 2,3,4</code>

Notes supplémentaires :

  • La clause ORDER BY de la fonction LISTAGG détermine l'ordre des jointures.
  • Si aucune clause ORDER BY n'est spécifiée, les valeurs seront concaténées dans n'importe quel ordre.
  • La fonction
  • LISTAGG peut également être utilisée pour générer d'autres types de chaînes de connexion, telles que des valeurs séparées par des nouvelles lignes.

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