您的位置:首页 > 数据库

SQL行列转换

2011-09-03 12:28 363 查看
select * from v_temp;
/*上面的视图结果如下:

user_name       role_name
---------------------------
系统管理员      管理员
feng            管理员
feng            一般用户
test            一般用户

想把结果变成这样:

user_name     role_name
-------------------------------
系统管理员    管理员 
feng          管理员,一般用户 
test          一般用户
===============================*/

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('常','一般用户')

create function join_str(@content varchar(100))
returns varchar(2000)
as
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

--调用:
select [name],dbo.join_str([name]) role2 from a_test group by [name]

--select distinct name,dbo.uf_test(name) from a_test
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息