一个简单行转列问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 12:27:44
看了网上好多资料还是不明白~
比如我有表
A (a,b)
1 see
2 look
1 smell
1 point
2 touch

如何显示成
a b
1 see,smell,point
2 look,touch

用SQL 存储过程都行~谢谢各位啦

存储过程是可以实现的。

按你的表结构写的存储过程如下:

CREATE PROCEDURE getA AS

create table #tmp
(
a int,
b varchar(200)
)

declare @a int,@b varchar(20)
Declare a_cur Cursor For select * from A

open a_cur
FETCH NEXT FROM a_cur into @a,@b

WHILE @@FETCH_STATUS = 0
begin

if (select count(*) from #tmp where a=@a)=0
begin
insert into #tmp values(@a,@b)
end
else
begin
update #tmp set b=b+','+@b where a=@a
end

FETCH NEXT FROM a_cur into @a,@b
end

close a_cur
DEALLOCATE a_cur

select * from #tmp
GO

自定义函数,借用楼主的表AA(a,b):
create function my_str(@id int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+cast(b as varchar) from AA where a=@id
set @str=right(@str,len(@str)-1)
return(@str)
End
结果:select