Maison >base de données >tutoriel mysql >Comment concaténer plusieurs lignes en une seule colonne séparée par des virgules dans SQL Server ?
Combinaison de plusieurs lignes SQL Server en une seule colonne séparée par des virgules
Ce guide montre comment fusionner plusieurs lignes en une seule colonne avec des valeurs séparées par des virgules dans SQL Server. Utilisons cet exemple d'ensemble de données :
<code class="language-sql">[TicketID], [Person] T0001 Alice T0001 Bob T0002 Catherine T0002 Doug T0003 Elaine</code>
Notre objectif est d'atteindre ce résultat :
<code class="language-sql">[TicketID], [People] T0001 Alice, Bob T0002 Catherine, Doug T0003 Elaine</code>
Solution (SQL Server 2005 et versions ultérieures) :
La requête SQL suivante exploite la fonction STUFF
pour concaténer efficacement les valeurs :
<code class="language-sql">SELECT t.TicketID, STUFF(ISNULL((SELECT ', ' + x.Person FROM @Tickets x WHERE x.TicketID = t.TicketID GROUP BY x.Person FOR XML PATH (''), TYPE).value('.','VARCHAR(max)'), ''), 1, 2, '') AS People FROM @Tickets t GROUP BY t.TicketID;</code>
Explication :
STUFF
remplace une partie d'une chaîne par une autre chaîne. Ici, cela supprime la virgule de début.FOR XML PATH
construit une représentation XML des données, qui est ensuite convertie en chaîne séparée par des virgules à l'aide de .value('.','VARCHAR(max)')
. Il s'agit d'une technique courante pour l'agrégation de chaînes dans SQL Server.ISNULL
gère les cas où un TicketID
n'a qu'une seule personne associée, évitant ainsi les erreurs.Cette méthode fournit une solution concise et efficace pour concaténer plusieurs lignes en une seule colonne séparée par des virgules dans SQL Server. N'oubliez pas de remplacer @Tickets
par le nom réel de votre table.
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!