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