MSSQL:如何创建将列显示为逗号分隔值的视图 [重复]

Posted

技术标签:

【中文标题】MSSQL:如何创建将列显示为逗号分隔值的视图 [重复]【英文标题】:MSSQL: How to create a VIEW that shows column as comma separated value [duplicate] 【发布时间】:2013-07-16 05:06:42 【问题描述】:

我正在使用 MSSQL 数据库,并且我有一个名为 UserDepartments 的表,其中包含分配给一个用户的所有部门 ID,如下所示

UserID | DepartmentID
1      | 220
1      | 330
1      | 210
1      | 100
2      | 330
2      | 440
3      | 550

我想要创建该表的视图,显示如下

UserID | Departments
1      | 220, 330, 210, 100
2      | 330, 440
3      | 550

是否可以使用 MSSQL 来做到这一点?

【问题讨论】:

可能重复Output a comma-separated list in a column in SQL Server 谢谢,你能把它作为答案发布,以便我可以将其标记为答案吗? 不需要新的答案,这已经被多次回答了。您可以对现有答案进行投票。玩得开心。 【参考方案1】:

试试这个 -

查询:

DECLARE @temp TABLE
(
       UserID INT
     , DepartmentID INT
)

INSERT INTO @temp (UserID, DepartmentID)
VALUES 
     (1, 220),(1, 330),
     (1, 210),(1, 100),
     (2, 330),(2, 440),
     (3, 550)

SELECT 
       t.UserID
     , DepartmentID = STUFF((
          SELECT ', ' + CAST(DepartmentID AS VARCHAR(10))
          FROM @temp t2
          WHERE t2.UserID = t.UserID
          FOR XML PATH(''), TYPE).value('.', 'VARCHAR(1024)'), 1, 2, '')                            
FROM ( 
     SELECT DISTINCT UserID 
     FROM @temp
) t

输出:

UserID      DepartmentID
----------- -----------------------------
1           220, 330, 210, 100
2           330, 440
3           550

【讨论】:

这个工作也很好

以上是关于MSSQL:如何创建将列显示为逗号分隔值的视图 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将多行生成为 1 列值或在 MSsql 中用逗号分隔的 sql 语句

将列中逗号分隔的字符串拆分为单独的行

有没有办法将列的值聚合和/或连接为 Group By 查询中的逗号分隔项?

Oracle DB 视图将列数值显示为文本相对值

MSSQL查询回显列之间用逗号分隔开怎么操作?

BigQuery 将列作为逗号分隔值