| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 742 人关注过本帖
标题:[讨论] 行列转换--合并 问题
只看楼主 加入收藏
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
快速回复:[讨论] 行列转换--合并 问题
数据加载中...
 
   



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

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