SQL Server逗号分隔列到多列
我目前有一个三列的表格<代码>组织,SQL Server逗号分隔列到多列,sql,sql-server,csv,user-defined-functions,Sql,Sql Server,Csv,User Defined Functions,我目前有一个三列的表格组织,组ID和角色 可以忽略名为Org的列 我一直试图根据组ID对它们进行分组,并将属于同一组ID的角色拆分为一列 到目前为止,我可以对记录进行分组,并将同一组的角色放在同一列中 我使用了以下脚本: Select [Group ID], Substring((Select ',' + [Role] From [dbo].[ASA_test] B Where B.[Group ID]
组ID
和角色
可以忽略名为Org
的列
我一直试图根据组ID
对它们进行分组,并将属于同一组ID
的角色拆分为一列
到目前为止,我可以对记录进行分组,并将同一组的角色
放在同一列中
我使用了以下脚本:
Select
[Group ID],
Substring((Select ',' + [Role]
From [dbo].[ASA_test] B
Where B.[Group ID] = A.[Group ID]]
For XML Path('')), 2, 8000) As List
From
[dbo].[ASA_test] A
Group By
[Group ID]
后来,我创建了一个临时表变量,并在其中插入了上面的SQL语句,以便在用户定义的函数中使用该变量,从而获得结果
请参阅下文:
DECLARE @MyTempTableVariable TABLE
(
GroupID int,
Role nvarchar(255)
)
INSERT INTO @MyTempTableVariable
Select
[Group ID],
Substring((Select ',' + [Role]
From [dbo].[ASA_test] B
Where B.[Group ID] = A.[Group ID]]
For XML Path('')), 2, 8000) As List
From
[dbo].[ASA_test] A
Group By
[Group ID]
然而,我不能再往前走了,因为它没有像我预期的那样工作
有人能帮忙吗?请注意,记录的总数不受我在这里发布的内容限制
谢谢 我认为您必须在表名之后的insert查询中指定列名。见下文:
INSERT INTO @MyTempTableVariable(GroupID , Role)....
查询的其余部分应该可以正常工作。我认为必须在表名之后的insert查询中指定列名。见下文:
INSERT INTO @MyTempTableVariable(GroupID , Role)....
查询的其余部分应该可以正常工作。这样做
SELECT GroupID
,STUFF((SELECT ', ' + CAST([Role] AS VARCHAR(10)) [text()]
FROM [dbo].[ASA_test]
WHERE GroupID = t.GroupID
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,' ') List_Output
FROM [dbo].[ASA_test] t
GROUP BY GroupID
这样做
SELECT GroupID
,STUFF((SELECT ', ' + CAST([Role] AS VARCHAR(10)) [text()]
FROM [dbo].[ASA_test]
WHERE GroupID = t.GroupID
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,' ') List_Output
FROM [dbo].[ASA_test] t
GROUP BY GroupID
如果这对你有效,请标记为答案,这样其他人也可以从这个问题中受益。谢谢如果这对你有用,请标记为答案,这样其他人也可以从这个问题中受益。谢谢