
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!
La différence entre vscode et visual studio
Quelles sont les instructions couramment utilisées dans vue ?
Comment restaurer le navigateur IE pour accéder automatiquement à EDGE
Quel est le paramètre de mémoire virtuelle approprié ?
Comment accélérer les pages Web
La différence entre aléatoire et pseudo-aléatoire
Qu'est-ce que Bitcoin ? Est-ce légal ?
Comment masquer l'adresse IP sur TikTok