标题:[讨论] 行列转换--合并 问题
只看楼主
fqbnet2008
Rank: 2
等 级:新手上路
威 望:4
帖 子:1020
专家分:0
注 册:2007-1-4
结帖率:100%
 问题点数:0 回复次数:3 
[讨论] 行列转换--合并 问题

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???






搜索更多相关主题的帖子: 行列 
2007-06-12 10:29
fqbnet2008
Rank: 2
等 级:新手上路
威 望:4
帖 子:1020
专家分:0
注 册:2007-1-4
得分:0 
我试了一下如果Uni_A 的pid 为int的话,就行了

结果就是 4,3 了。

雄关漫道真如铁,而今迈步从头越,从头越,苍山如海,残阳如血㊣♀★
2007-06-12 10:32
初学Delphi
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:330
专家分:0
注 册:2006-4-4
得分:0 

方法应该没错,可能你在创建表的时候pid用的char字符类型吧

2007-06-12 11:46
fqbnet2008
Rank: 2
等 级:新手上路
威 望:4
帖 子:1020
专家分:0
注 册:2007-1-4
得分:0 
楼上说的对,方法是没有错,如果把pid改成int型就好了,不会出现4  ,    3 这种情况了

雄关漫道真如铁,而今迈步从头越,从头越,苍山如海,残阳如血㊣♀★
2007-06-12 13:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-146721-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.792872 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved