首頁 >資料庫 >mysql教程 >如何在 SQL Server 和 Oracle 中將多行連接成單一逗號分隔列?

如何在 SQL Server 和 Oracle 中將多行連接成單一逗號分隔列?

Patricia Arquette
Patricia Arquette原創
2025-01-21 06:46:09847瀏覽

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

將多行組合成單一逗號分隔列(SQL Server 和 Oracle)

本指南示範如何基於共用欄位(例如 TicketID)合併多行,並將其對應的值(例如 Person)連接到單一逗號分隔列(例如 People)。 我們將探索適用於 SQL Server 和 Oracle 的解決方案。

SQL Server 解決方案

SQL Server 利用 STUFF 函數進行高效率的字串連接和插入。 以下範例說明了這一點:

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

Oracle 提供了 LISTAGG 函數,專門用於將列值與自訂分隔符號連接起來。 使用方法如下:

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

這兩種方法都有效地將多行合併為一列,並用逗號分隔連接的值。 函數的選擇取決於您的資料庫系統(SQL Server 或 Oracle)。

以上是如何在 SQL Server 和 Oracle 中將多行連接成單一逗號分隔列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn