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 ?

Comment concaténer plusieurs lignes en une seule colonne séparée par des virgules dans SQL Server ?

DDD
DDDoriginal
2025-01-21 06:57:16354parcourir

How to Concatenate Multiple Rows into a Single Comma-Separated Column in 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 :

  • Cette solution est compatible avec SQL Server 2005 et versions ultérieures.
  • La fonction STUFF remplace une partie d'une chaîne par une autre chaîne. Ici, cela supprime la virgule de début.
  • La clause 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!

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