日期:2014-05-19  浏览次数:20361 次

求一个合并行问题
名称           年份  
Davolio 1992
Fuller 1992
Leverling 1993
Buchanan 1993
Peacock 1993
Suyama 1994
Callahan 1994
Dodsworth 1994
King 1992

我想得到这样的结果:
名称                                                     年份
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这个帖子和我前几天发的类似,希望你参考下