Maison > base de données > tutoriel mysql > Comment concaténer des e-mails par ReportId à l'aide de GROUP BY et STUFF() de SQL Server ?

Comment concaténer des e-mails par ReportId à l'aide de GROUP BY et STUFF() de SQL Server ?

Barbara Streisand
Libérer: 2025-01-10 17:38:41
original
969 Les gens l'ont consulté

How to Concatenate Emails by ReportId Using SQL Server's GROUP BY and STUFF()?

Agrégation d'e-mails dans SQL Server : une solution GROUP BY et STUFF()

La clause GROUP BY de SQL Server est puissante pour résumer les données. Une tâche fréquente consiste à combiner les valeurs de plusieurs lignes en une seule chaîne, souvent séparées par des virgules. Ceci est géré efficacement à l'aide de fonctions telles que STUFF().

Illustrons avec un exemple de tableau de rapport des employés :

ID ReportId Email
1 1 john@example.com
2 2 mary@example.com
3 1 jane@example.com
4 3 david@example.com
5 3 susan@example.com

Pour concaténer les e-mails associés à chaque ReportId, en utilisant des virgules comme séparateurs, cette requête fonctionne :

<code class="language-sql">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;</code>
Copier après la connexion

La fonction STUFF() modifie une chaîne. Il faut quatre arguments : la chaîne, la position de départ, le nombre de caractères à supprimer et la chaîne de remplacement.

La requête externe regroupe par ReportId. La requête interne, utilisant FOR XML PATH(''), concatène les e-mails pour chaque groupe. STUFF() supprime ensuite la virgule et l'espace de début.

Résultat de la requête :

ReportId Email
1 john@example.com, jane@example.com
2 mary@example.com
3 david@example.com, susan@example.com

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