Maison >base de données >tutoriel mysql >Comment concaténer des e-mails par ID de rapport à l'aide de la clause GROUP BY de SQL Server ?

Comment concaténer des e-mails par ID de rapport à l'aide de la clause GROUP BY de SQL Server ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-10 17:41:41395parcourir

How to Concatenate Emails by Report ID Using SQL Server's GROUP BY Clause?

SQL Server : concaténation d'e-mails dans des groupes d'ID de rapport à l'aide de GROUP BY

Dans SQL Server, regrouper efficacement les données et combiner les valeurs associées en chaînes uniques est une tâche courante. La clause GROUP BY regroupe les lignes en fonction des colonnes spécifiées, permettant l'utilisation de la fonction d'agrégation pour la manipulation des données et les calculs.

Combinaison d'e-mails par ID de rapport

Imaginez un tableau structuré comme ceci :

<code>ID    ReportId     Email
1     1            [email protected]
2     2            [email protected]
3     1            [email protected]
4     3            [email protected]
5     3            [email protected]</code>

L'objectif est de regrouper les lignes par ReportId et de concaténer les e-mails correspondants en chaînes séparées par des virgules. Le résultat souhaité :

<code>ReportId     Email
1            [email protected], [email protected]
2            [email protected]
3            [email protected], [email protected]</code>

Exploiter la fonction STUFF()

Ceci est effectivement réalisé en utilisant la fonction STUFF() dans une sous-requête :

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

Explication détaillée :

  • La sous-requête interne sélectionne tous les e-mails pour chacun ReportId, en faisant précéder chaque e-mail d'une virgule et d'un espace.
  • FOR XML PATH('') transforme les résultats de la sous-requête en une seule chaîne XML.
  • STUFF() supprime la virgule et l'espace de début de la chaîne XML, ce qui donne la liste de diffusion souhaitée séparée par des virgules.

Autres considérations :

  • D'autres fonctions d'agrégation (par exemple, SUM(), AVG()) peuvent être utilisées avec GROUP BY pour divers calculs sur des données groupées.
  • STUFF() est une fonction très polyvalente pour diverses opérations de manipulation de chaînes.

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