行列转换

上一篇 / 下一篇  2008-02-18 13:01:25 / 个人分类:SQL学习

问题:

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


TAG:

引用 删除 xyfeven@gmai   /   2008-07-17 15:10:23
我使用了另一种方法:
Alter function join_str(@content nvarchar(100))
returns nvarchar(2000)
as
begin
declare @str nvarchar(2000)
set @str=''
select @str=@str+ (case @str when '' then ltrim(DivisionID) else ','+ltrim(DivisionID) end)
from Companies
where [Name]=@content
return @str
end
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2008-10-14  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 849
  • 日志数: 4
  • 建立时间: 2008-02-17
  • 更新时间: 2008-03-18

RSS订阅

Open Toolbar