Utilisation de GROUP BY de SQL Server pour concaténer des valeurs séparées par des virgules
La clause GROUP BY
de SQL Server est inestimable pour agréger des données en fonction d'attributs partagés. Toutefois, la combinaison de plusieurs valeurs en une seule chaîne séparée par des virgules nécessite une approche légèrement plus avancée. C'est là que la fonction STUFF
s'avère utile.
Voici comment réaliser une agrégation séparée par des virgules en utilisant GROUP BY
et STUFF
:
SELECT ReportId, Email = STUFF((SELECT ', ' + Email FROM your_table b WHERE b.ReportId = a.ReportId FOR XML PATH('')), 1, 2, '') FROM your_table a GROUP BY ReportId
Disséquons cette requête :
SELECT
externe : Ceci récupère le ReportId
et la chaîne Email
agrégée.STUFF
fonction : Cela concatène intelligemment les e-mails, en insérant une virgule et un espace entre chacun.SELECT
: Cette sous-requête récupère tous les e-mails associés à un ReportId
spécifique.FOR XML PATH('')
: Ceci convertit le jeu de résultats de la requête interne en une chaîne XML, fournissant un format pratique pour la concaténation.WHERE
: Cela garantit que la requête interne sélectionne uniquement les e-mails correspondant au ReportId
de la requête externe.L'application de cette requête à des exemples de données produirait le résultat suivant :
ReportId | |
---|---|
1 | [email protected], [email protected] |
2 | [email protected] |
3 | [email protected], [email protected] |
Cette technique génère efficacement des listes séparées par des virgules, simplifiant ainsi la gestion des données agrégées.
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!