首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

合并行有关问题

2012-01-18 
求一个合并行问题名称年份Davolio1992Fuller1992Leverling1993Buchanan1993Peacock1993Suyama1994Callahan

求一个合并行问题
名称           年份  
Davolio1992
Fuller1992
Leverling1993
Buchanan1993
Peacock1993
Suyama1994
Callahan1994
Dodsworth1994
King1992

我想得到这样的结果:
名称                                                     年份
Davolio,Fuller,King                       1992
Leverling,Buchanan,Peacock         1993
Suyama,Callahan,Dodsworth           1994




[解决办法]
create function fmerg(@年份 char(10))
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str= ' '
select @str=@str + 名稱 from C where 年份=@年份
set @str=right(@str,len(@str)-1)
return(@str)
End
go
select dbo.fmerg(年份),年份 from C group by 年份
[解决办法]
create function aabb(@bb char(10))
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str= ' '
select @str=@str + aa + ', ' from table1 where bb=@bb

set @str=left(@str,len(@str)-1)
return(@str)
End
go
select dbo.aabb(bb) as aa ,bb from table1 group by bb
[解决办法]
用一个合并函数:
create function test_f on (@year int)
returns nvarchar(1000)
as
begin
declare @s nvarchar(1000)
select @s=isnull(@s+ ', ', ' ')+名称 from table1 where 年份=@year
return @s
end
go
调用:
select distinct [名称]=dbo.test_f(年份),年份 from table1
[解决办法]
http://community.csdn.net/Expert/topic/5681/5681636.xml?temp=.8725855这个帖子和我前几天发的类似,希望你参考下

热点排行