將多個 SQL Server 行組合成一個逗號分隔的欄位
本指南示範如何在 SQL Server 中將多行合併為具有逗號分隔值的單列。 讓我們使用這個範例資料集:
<code class="language-sql">[TicketID], [Person] T0001 Alice T0001 Bob T0002 Catherine T0002 Doug T0003 Elaine</code>
我們的目標是實現這個輸出:
<code class="language-sql">[TicketID], [People] T0001 Alice, Bob T0002 Catherine, Doug T0003 Elaine</code>
解決方案(SQL Server 2005 及更高版本):
以下 SQL 查詢利用 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, '') AS People FROM @Tickets t GROUP BY t.TicketID;</code>
說明:
STUFF
函數用另一個字串取代字串的一部分。 在這裡,它刪除了前導逗號。 FOR XML PATH
子句建構資料的 XML 表示形式,然後使用 .value('.','VARCHAR(max)')
將其轉換為逗號分隔的字串。 這是 SQL Server 中字串聚合的常用技術。 ISNULL
處理 TicketID
只有一個關聯人的情況,以防止錯誤。 此方法提供了一種簡潔有效的解決方案,用於在 SQL Server 中將多行連接到單一逗號分隔列中。 請記得將 @Tickets
替換為您的實際表名稱。
以上是如何在 SQL Server 中將多行連接成單一逗號分隔列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!