如何在一个列中返回多个值(T-SQL)?-问答-阿里云开发者社区-阿里云

开发者社区> 心有灵_夕> 正文

如何在一个列中返回多个值(T-SQL)?

2019-12-29 13:21:32 2619 1

我有一个表UserAliases(UserId, Alias),每个用户有多个别名。我需要查询它并返回给定用户的所有别名,诀窍是将它们全部归入一列。

例:

UserId/Alias  
1/MrX  
1/MrY  
1/MrA  
2/Abc  
2/Xyz

我希望查询结果采用以下格式:

UserId/Alias  
1/ MrX, MrY, MrA  
2/ Abc, Xyz
取消 提交回答
全部回答(1)
  • 心有灵_夕
    2019-12-29 13:21:48

    您可以将函数与COALESCE一起使用。

    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
    
    GO
    
    SELECT UserID, dbo.GetAliasesByID(UserID)
    FROM UserAliases
    GROUP BY UserID
    
    GO
    
    0 0
0
文章
732
问答
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载