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