Maison >base de données >tutoriel mysql >Comment récupérer des résultats agrégés avec des valeurs séparées par des virgules dans SQL Server ?

Comment récupérer des résultats agrégés avec des valeurs séparées par des virgules dans SQL Server ?

DDD
DDDoriginal
2025-01-07 20:07:39658parcourir

How to Retrieve Aggregated Results with Comma-Separated Values in SQL Server?

Récupérer les résultats agrégés des colonnes groupées à l'aide d'un délimiteur par virgule dans SQL Server

Dans SQL Server, vous pouvez utiliser la structure FOR XML PATH pour récupérer des résultats agrégés avec des délimiteurs par virgules et des colonnes groupées. Prenons l'exemple suivant :

<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>

Dans cette requête :

    La structure
  • FOR XML PATH génère une liste de valeurs séparées par des virgules pour la colonne ID de chaque groupe (représentée par la colonne Value).
  • STUFF La fonction supprime le ', ' au début de la liste agrégée.
  • .value('.', 'NVARCHAR(MAX)') Convertissez les résultats XML en type NVARCHAR(MAX) pour éviter les erreurs potentielles.

Exemples de données et résultats attendus :

ID Value
1 a
1 b
2 c

Résultat attendu :

ID Values
1 a,b
2 c

Autres exemples :

Pour plus de références sur l'utilisation de résultats séparés par des virgules pour le regroupement et l'agrégation dans SQL Server, considérons l'exemple suivant :

Cette réponse révisée améliore la requête SQL en convertissant explicitement la sortie XML en chaîne à l'aide de .value('.', 'NVARCHAR(MAX)'), évitant ainsi les erreurs potentielles. L'explication reste également claire et concise.

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