开发者社区> 问答> 正文

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

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

例:

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

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

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

展开
收起
心有灵_夕 2019-12-29 13:21:32 5481 0
1 条回答
写回答
取消 提交回答
  • 您可以将函数与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
    
    2019-12-29 13:21:48
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载