Sql server MSSQL:如何创建以逗号分隔值显示列的视图
我使用的是MSSQL数据库,我有一个名为UserDepartments的表,其中包含分配给一个用户的所有部门ID,如下所示Sql server MSSQL:如何创建以逗号分隔值显示列的视图,sql-server,view,Sql Server,View,我使用的是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
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
我想要创建一个表的视图,如下所示
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来做吗?试试这个-
查询:
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
输出:
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
可能重复谢谢你能把它作为一个答案贴出来,这样我就可以把它标记为一个答案吗?不需要新的答案,这已经被回答了很多次了。你可以就现有答案投票。玩得开心。这也很好