2. 行列转换--合并
有表A,
id pid
1 1
1 2
1 3
2 1
2 2
3 1
如何化成表B:
id pid
1 1,2,3
2 1,2
3 1
创建一个合并的函数
create function fmerg(@id int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+cast(pid as varchar) from 表A where id=@id set @str=right(@str,len(@str)-1)
return(@str)
End
go
以上是引用 http://bbs.bc-cn.net/viewthread.php?tid=15174 中的内容
我试了一下 ,好像不行
我的Uni_A
id pid
1 4
2 5
4 7
5 9
1 3
2 7
3 9
3 6
3 4
id int,pid char(10)
我的Uni_B
id pid
1 ,3
2 ,7
3 ,6 ,4
4
5
id int pid varchar(100)
我把语句修改了一下
create function fmerg(@nid int )
returns varchar(100)
as
begin
declare @str varchar(100)
set @str=''
select @str=@str+','+ltrim(pid) from Uni_A where id =@nid order by id
set @str=substring(@str,charindex(@str,',')+2,len(@str))
return(@str)
end
go
delete from Uni_B
go
insert into Uni_B select distinct id ,dbo.fmerg(id) from Uni_A
go
select * from Uni_B
得到Uni_B
id pid
1 4 ,3
2 5 ,7
3 9 ,6 ,4
4 7
5 9
怎么才能把pid变成4,3 而不是4 ,3???