当前位置: 代码迷 >> Sql Server >> oracle话语迁移到sqlserver
  详细解决方案

oracle话语迁移到sqlserver

热度:45   发布时间:2016-04-24 10:34:39.0
oracle语句迁移到sqlserver
 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_

试试吧 没数据测试不了
  相关解决方案