首页 >数据库 >mysql教程 >如何在 T-SQL 中将多行连接成一列?

如何在 T-SQL 中将多行连接成一列?

DDD
DDD原创
2025-01-12 09:07:46980浏览

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