首頁 >資料庫 >mysql教程 >如何在 T-SQL 中將多行連接成一列?

如何在 T-SQL 中將多行連接成一列?

DDD
DDD原創
2025-01-12 09:07:461018瀏覽

How to Concatenate Multiple Rows into a Single Column in T-SQL?

使用 T-SQL 將多個值傳回為單列

在處理包含單一屬性的多個值的表時,需要將這些值檢索並合併到單列中,以便有效率地進行資料分析。本文深入探討了一種使用函數和字串操作組合來在一列中傳回多個值的解決方案。

範例:

考慮「UserAliases」表,每個使用者有多個別名:

<code>UserId/Alias  
1/MrX  
1/MrY  
1/MrA  
2/Abc  
2/Xyz</code>

目標是將資料轉換為以下格式:

<code>UserId/Alias  
1/ MrX, MrY, MrA  
2/ Abc, Xyz</code>

解:

為此,我們使用自訂函數“GetAliasesById”,該函數使用“COALESCE”函數。此函數初始化一個變數“@output”,並迭代地向其中添加別名值,並以逗號分隔。以下是函數程式碼:

<code class="language-sql">CREATE FUNCTION [dbo].[GetAliasesById]
(
    @userID int
)
RETURNS varchar(max)
AS
BEGIN
    declare @output varchar(max)
    select @output = COALESCE(@output + ', ', '') + alias
    from UserAliases
    where userid = @userID

    return @output
END</code>

最後,我們檢索資料並應用「GetAliasesById」函數來合併別名:

<code class="language-sql">SELECT UserID, dbo.GetAliasesByID(UserID)
FROM UserAliases
GROUP BY UserID</code>

此查詢傳回所需輸出,每個使用者的多個別名合併到單列中。 “COALESCE”函數有效地處理空值,確保有效的字串輸出。

以上是如何在 T-SQL 中將多行連接成一列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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