SQL Server : concaténation de valeurs avec des virgules lors de l'agrégation
Souvent dans SQL Server, vous devez regrouper les données par colonne spécifique, puis combiner les valeurs associées en une seule chaîne séparée par des virgules. Illustrons cela avec un exemple. Imaginez un tableau nommé YourTable
avec les colonnes ID
et Value
:
<code>ID | Value -------|-------- 1 | a 1 | b 2 | c</code>
L'objectif est de générer un ensemble de résultats dans lequel chaque ID
unique a une chaîne correspondante séparée par des virgules de ses entrées Value
associées. Nous pouvons y parvenir en utilisant la méthode FOR XML PATH
:
<code class="language-sql">SELECT ID, STUFF((SELECT ', ' + Value FROM YourTable t2 WHERE t1.ID = t2.ID FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '') AS Values FROM YourTable t1 GROUP BY ID;</code>
Cette requête fonctionne comme suit :
SELECT
: Ceci sélectionne la colonne ID
et prépare l'agrégation.SELECT
: Ceci récupère toutes les entrées Value
correspondant au ID
actuel de la requête externe. Le ', ' Value
ajoute une virgule et un espace avant chaque valeur.FOR XML PATH('')
: Cela convertit le résultat de la requête interne en une chaîne XML, concaténant efficacement les valeurs. La chaîne vide ''
empêche la génération des balises XML..value('.', 'NVARCHAR(MAX)')
: Ceci extrait la chaîne concaténée du XML.STUFF(..., 1, 2, '')
: Cela supprime le début ', ' de la chaîne concaténée.Le résultat final sera :
<code>ID | Values -------|-------- 1 | a, b 2 | c</code>
Cette technique fournit un moyen concis et efficace d'effectuer une agrégation séparée par des virgules dans SQL Server.
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!