将多行的结果分组到一列中
这是一个使用FOR XML
将字段转换为列表并使用STUFF
去除开头逗号的小技巧 - 这应该是接近的解决方法(未经测试):
SELECT v2_admin.adminid, v2_admin.adminname, v2_admin.login, v2_admin.email, STUFF( ( SELECT ',' + CAST(v2_roles.id as varchar) AS [text()] FROM v2_roles WHERE v2_admin_roles.roleid = v2_roles.id ORDER BY v2_roles.id FOR XML PATH('') ), 1, 1, '') AS Roles FROM v2_admin INNER JOIN v2_admin_roles ON v2_admin.adminid = v2_admin_roles.adminid WHERE v2_admin.adminid = 2 GROUP BY v2_admin.adminid, v2_admin.adminname, v2_admin.login, v2_admin.email
谢谢你的回答,但是它给出了错误-在将varchar值“,”转换为int数据类型时转换失败。
将你的Roles.Id进行类型转换-等一下,我会修改...
-参见编辑-你只需要将int转换为varchar-祝你好运!
抱歉,但它仍然给我两行。KAF上面的回答提供了解决我的问题的解决方案。谢谢
-没关系-看起来我忘记了GROUP BY-主键(对我们两个人的答案来说)使用FOR XML 🙂 -很高兴我们能帮到你...