如何用sql语句将一列的多行变为一行用逗号隔开

情况是这样的,有一个表dbo.SystemPositionInMenu,里面有Id,menucode (即权限对应的编码),positionname (即职位名称)三个字段。 现在要在里面新增加positionname为操作经理和普通操作。。然后操作经理有很多个menucode,现在需要 把很多个menucode放在一行用逗号隔开。该怎么写语句呢??

http://blog.sina.com.cn/s/blog_63c31d660101obov.html

用wm_concat(''''||字段||'''') 试一下

try

 select group_concat(menucode) from dbo.SystemPositionInMenu group by positionname

if exists(select 1 from sysobjects where name='getstring' )
BEGIN
drop function getString
END
go
create function getstring(@positionname int)
RETURNs nvarchar(500)
AS
BEGIN
declare @menucode nvarchar(300),@sumname nvarchar(500)
declare cscursor cursor for select menucode from emp where emp.positionname=@positionname
set @sumname=''
open cscursor
fetch next from cscursor into @menucode
while @@fetch_status=0
BEGIN
set @sumname=@sumname+','+@menucode
fetch next from cscursor into @menucode
end
return @sumname
END

go

select positionname,dbo.getstring(positionname) from emp
GROUP BY positionname