主题:[讨论]求算法.....在线等.............................
行列转换--合并
有表A,
id pid
1 1
1 2
1 2
1 2
1 3
2 1
2 2
3 1
如何化成表B:
id pid
1 1,2,3
2 1,2
3 1
而不是这样的转化成表C
id pid
1 1,2,2,2,3
2 1,2
3 1
我的意思是把表C的 pid 这一列不要有重复的值 输出的结果
像表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
--调用自定义函数得到结果
select distinct id,dbo.fmerg(id) from 表A
得到的是这样的结果
而不是这样的转表B
id pid
1 1,2,2,2,3
2 1,2
3 1[em1][em4][em4][em4][em18][em18][em18][em18]