Jam*_*esP 4 sql sql-server string-aggregation
我目前正在尝试将group_concatMySQL中的函数模拟为MSSQL.我遵循了此处和此处的代码格式.问题是,当我尝试执行查询时,我收到了Ambiguous column name我的列的消息RoleID.这是我的查询:
select UserName, RoleID from tb_UserInRoles
cross apply(
select RoleName from tb_Roles
where tb_UserInRoles.RoleID = tb_Roles.RoleID
for XML Path('')
) fxMerge (RoleID) group by UserName, RoleID
Run Code Online (Sandbox Code Playgroud)
我想知道为什么这种特殊的代码格式会出现Ambiguous column name错误信息.我需要让这个查询工作并理解它.在此先感谢您的帮助.
我计划在多对多关系表中使用它,其中系统的用户可以有多个角色,如下所示:
| User | Role |
|--------|---------|
| JamesP | Maker |
| JamesP | Approver|
| JamesP | Admin |
Run Code Online (Sandbox Code Playgroud)
我希望结果查询是这样的:
| User | Role |
|--------|--------------------------|
| JamesP | Maker, Approver, Admin |
Run Code Online (Sandbox Code Playgroud)
试试这个:
SELECT UIR.UserName, MAX(STUFF(fxMerge.RoleID, 1, 1, ''))
FROM tb_UserInRoles UIR
CROSS APPLY(
SELECT ',' + RoleName
FROM tb_UserInRoles UIR1
INNER JOIN tb_Roles RM ON UIR1.RoleID = RM.RoleID
WHERE UIR.UserName = UIR1.UserName
FOR XML PATH('')
) fxMerge (RoleID)
GROUP BY UIR.UserName
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
268 次 |
| 最近记录: |