Maison > base de données > tutoriel mysql > Comment concaténer plusieurs lignes en une seule colonne délimitée par des virgules dans SQL Server et Oracle ?

Comment concaténer plusieurs lignes en une seule colonne délimitée par des virgules dans SQL Server et Oracle ?

Patricia Arquette
Libérer: 2025-01-21 06:46:09
original
845 Les gens l'ont consulté

How to Concatenate Multiple Rows into a Single Comma-Delimited Column in SQL Server and Oracle?

Combinaison de plusieurs lignes en une seule colonne délimitée par des virgules (SQL Server et Oracle)

Ce guide montre comment consolider plusieurs lignes en fonction d'un champ partagé (par exemple, TicketID) et concaténer leurs valeurs correspondantes (par exemple, Person) en une seule colonne séparée par des virgules (par exemple, People). Nous explorerons des solutions pour SQL Server et Oracle.

Solution SQL Server

SQL Server utilise la fonction STUFF pour une concaténation et une insertion efficaces de chaînes. L'exemple suivant illustre cela :

<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, ''
        ) [No Preceding Comma],
       ISNULL((
            SELECT ', ' + x.Person
            FROM @Tickets x
            WHERE x.TicketID = t.TicketID
            GROUP BY x.Person
            FOR XML PATH (''), TYPE
        ).value('.','VARCHAR(max)'), '') [Preceding Comma If Not Empty]
FROM @Tickets t
GROUP BY t.TicketID</code>
Copier après la connexion

Solution Oracle

Oracle propose la fonction LISTAGG, spécialement conçue pour concaténer les valeurs de colonnes avec un délimiteur personnalisé. Voici comment il est utilisé :

<code class="language-sql">SELECT TicketID,
       LISTAGG(Person, ',') WITHIN GROUP (ORDER BY Person) AS People
FROM @Tickets
GROUP BY TicketID</code>
Copier après la connexion

Les deux méthodes fusionnent efficacement plusieurs lignes en une seule colonne, en séparant les valeurs concaténées par des virgules. Le choix de la fonction dépend de votre système de base de données (SQL Server ou Oracle).

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