if object_id('tablename') is not null drop table tablename
select '张三' as 姓名, '语文' as 科目
into tablename
union select '张三', '数学'
union select '张三', '英语'
union select '张三', '物理'
union select '李四', '语文'
union select '李四', '化学'
go
----------------------
if object_id('fn_合并') is not null drop function fn_合并
go
create function fn_合并(
@姓名 varchar(20)
)
returns varchar(300)
as
begin
declare @r varchar(300)
set @r=''
select top 3 @r=@r+' '+科目 from tablename where 姓名=@姓名
if @r<>''
set @r=stuff(@r,1,1,'')
return @r
end
go
--调用
select 姓名,dbo.fn_合并(姓名) as 科目 from tablename
group by 姓名
/*
姓名 科目
---- -----------
李四 化学 语文
张三 数学 物理 英语
*/
----------------------
drop function fn_合并
drop table tablename
create function dn_合并(
@姓名 varchar(20)
)
returns varchar(300)
as
begin
declare @r varchar(300)
set @r=''
select top 3 @r=@r+' '+科目 from tablename where 姓名=@姓名
if @r<>''
set @r=stuff(@r,1,1,'')
return @r
end
go
--调用
select 姓名,dbo.fn_合并(姓名) as 科目 from tablename
group by 姓名
create function dn_合并(
@姓名 varchar(20)
)
returns varchar(300)
as
begin
declare @r varchar(300)
set @r=''
select @r=@r+' '+科目 from tablename where 姓名=@姓名
if @r<>''
set @r=stuff(@r,1,1,'')
return @r
end
go
--调用
select 姓名,dbo.fn_合并(姓名) as 科目 from tablename
group by 姓名