使用 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中文網其他相關文章!