--1.创建一个合并的函数
create function fmerg(@id varchar(10))
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+运动项目 from 表A where 姓名=@id
set @str=right(@str,len(@str)-1)
return(@str)
End
go--调用自定义函数得到结果
select distinct 姓名,dbo.fmerg(姓名) from 表A

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/2440/2440306.xml?temp=.6941645
     [交流]行列转换
      

  2.   

    这种贴子好多:
    --1.创建一个合并的函数
    create function fmerg(@id int)
    returns varchar(8000)
    as
    begin
    declare @str varchar(8000)
    set @str=''
    select @str=@str+','+content from Mytable where id=@id
    set @str=right(@str,len(@str)-1)
    return(@str)
    End
    go--调用自定义函数得到结果
    select distinct id,dbo.fmerg(id) from Mytable
      

  3.   

    declare @s varchar(8000)
    set @s=''
    select @s=@s+','+字段2 from 表 where 字段3='张三'
    exec('select ''张三''+@s)
      

  4.   

    --上面是只针对楼主的要求,只查询张三的.--如果不只张三的,还有其他的,就需要用楼上几位的方法,用自定义函数.
    --或用下面的方法,临时表处理:select 字段2,字段3,aa=cast('' as varchar(8000)) into #t from tTest order by 字段3,字段2declare @a varchar(10),@b varchar(8000)
    update #t set @b=case @a when 字段3 then @b+字段2 else 字段2 end
      ,aa=@b,@a=字段3 select 字段3,fBookName=max(aa) from #t group by 字段3
    drop table #t