【发布时间】:2022-01-22 06:53:42
【问题描述】:
我有一个连接表,其中包含“account_id”和“group id”,两者均由 GUID 表示。我正在尝试合并列,以便我们得到一个“account_id”,其中所有“group_id”都合并到一个列/行,但显示帐户和组的实际名称。
表格 帐号
account_id Name
1 Henry
2 Smith
组
Group_id Group_nameName
3 User
4 Admin
Account_Group_Join_Table
account_id group_id
1 3
1 4
2 3
期望的结果:
Name Groups
Henry Dev,User
Smith User, Admin
到目前为止的代码返回 'account_id' 和 'group_id' 分组到单行/列
select account_id,
stuff((SELECT distinct ', ' + group_id
FROM account_group_join t2
where t2.account_id = t1.account_id
FOR XML PATH('')),1,1,'') [Groups]
from account_group_join t1
group by account_id
【问题讨论】:
-
FOR XML PATH(''))应该是FOR XML PATH(''), TYPE).value('text()[1]','nvarchar(max)')以避免 XML 转义,,1,1,''应该是,1,2,''或任何长度的分隔符
标签: sql-server tsql