Maison > base de données > tutoriel mysql > Comment agréger et séparer les valeurs par des virgules dans SQL Server à l'aide de FOR XML PATH ?

Comment agréger et séparer les valeurs par des virgules dans SQL Server à l'aide de FOR XML PATH ?

Patricia Arquette
Libérer: 2025-01-07 21:19:40
original
885 Les gens l'ont consulté

How to Aggregate and Comma-Separate Values in SQL Server Using FOR XML PATH?

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

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

Cette requête fonctionne comme suit :

  1. Externe SELECT : Ceci sélectionne la colonne ID et prépare l'agrégation.
  2. Inner 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.
  3. 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.
  4. .value('.', 'NVARCHAR(MAX)') : Ceci extrait la chaîne concaténée du XML.
  5. 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>
Copier après la connexion

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!

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