A﹑建立測試數據表
create table a_test(name varchar(20),role2 varchar(20))

insert into a_test values('李','管理員')
insert into a_test values('張','管理員')
insert into a_test values('張','一般用戶')
insert into a_test values('常','一般用戶')

B﹑解決方法
一﹕
create function uf_test(@n varchar(30))
returns varchar(99)
as
--select distinct name,dbo.uf_test(name) from a_test
begin
declare cur_role2 cursor local for select role2 from a_test where name =@n
declare @r varchar(30),@ret varchar(99)
open cur_role2
fetch cur_role2 into @r
while @@fetch_status = 0
begin
if @ret is null
select @ret = @r
else
select @ret = @ret + ',' +@r
fetch cur_role2 into @r
end
close cur_role2
return @ret
end
Go
二(IT PUB中公認最好的方法)
create function join_str(@content varchar(100))
returns varchar(2000)
as
--select [name],dbo.join_str([name]) role2 from a_test group by [name]
begin
declare @str varchar(2000)
set @str=''
select @str=@str+','+rtrim(role2) from a_test where [name]=@content
select @str=right(@str,len(@str)-1)
return @str
end
go


相关文章: