oracle的语句用到 WM_CONCAT
SELECT R.ID_, R.NAME_, R.REMARK_, WM_CONCAT(SB.ID_) AS BID_ FROM SYS_ROLE_A R
LEFT JOIN SYS_ROLE_BUSINESS_A SRB ON (SRB.ROLEID_ = R.ID_)
LEFT JOIN SYS_BUSINESS_A SB ON (SB.ID_ = SRB.BID_)
WHERE R.ID_ = 0 GROUP BY R.ID_, R.NAME_, R.REMARK_
运行结果为:
ID_ NAME_ REMARK_ BID_
0 管理员 管理员 1,2,34,3,4,5,8,7
现在问题是系统迁移到sqlserver2008 这条语句怎么改可以实现这个效果?
------解决方案--------------------
SELECT R.ID_,
R.NAME_,
R.REMARK_,
BID_=STUFF((SELECT ','+ID_ FROM SYS_BUSINESS_A t WHERE ID_=SB.ID_ FOR XML PATH('')), 1, 1, '')
FROM SYS_ROLE_A R
LEFT JOIN SYS_ROLE_BUSINESS_A SRB
ON SRB.ROLEID_ = R.ID_
LEFT JOIN SYS_BUSINESS_A SB
ON SB.ID_ = SRB.BID_
WHERE R.ID_ = 0
GROUP BY R.ID_,
R.NAME_,
R.REMARK_
试试吧 没数据测试不了