Heim >Datenbank >MySQL-Tutorial >Wie verkette ich mehrere Zeilen in einer einzigen durch Kommas getrennten Spalte in SQL Server und Oracle?

Wie verkette ich mehrere Zeilen in einer einzigen durch Kommas getrennten Spalte in SQL Server und Oracle?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-21 06:46:09898Durchsuche

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

Kombinieren mehrerer Zeilen in einer einzigen durch Kommas getrennten Spalte (SQL Server und Oracle)

Diese Anleitung zeigt, wie Sie mehrere Zeilen basierend auf einem gemeinsamen Feld (z. B. TicketID) zusammenfassen und ihre entsprechenden Werte (z. B. Person) in einer einzigen durch Kommas getrennten Spalte (z. B. People) verketten. Wir werden Lösungen sowohl für SQL Server als auch für Oracle erkunden.

SQL Server-Lösung

SQL Server nutzt die Funktion STUFF für die effiziente Verkettung und Einfügung von Zeichenfolgen. Das folgende Beispiel verdeutlicht dies:

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

Oracle-Lösung

Oracle bietet die Funktion LISTAGG, die speziell für die Verkettung von Spaltenwerten mit einem benutzerdefinierten Trennzeichen entwickelt wurde. So wird es verwendet:

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

Beide Methoden führen effektiv mehrere Zeilen in einer einzigen Spalte zusammen und trennen die verketteten Werte durch Kommas. Die Wahl der Funktion hängt von Ihrem Datenbanksystem (SQL Server oder Oracle) ab.

Das obige ist der detaillierte Inhalt vonWie verkette ich mehrere Zeilen in einer einzigen durch Kommas getrennten Spalte in SQL Server und Oracle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn