create table a (pinming varchar(10),peijian_name varchar(10),id int)---测试数据
insert into a select 'H-24001','A',1
insert into a select 'H-24001','B',2
insert into a select 'H-24001','C',3
insert into a select 'H-24002','AA',1
insert into a select 'H-24002','BB',2
create function x (@a varchar(10))----建立函数 
returns varchar(10)
as
begin
declare @x varchar(10)
set @x=''
select @x=@x+peijian_name+' ' 
from a
where pinming=@a
return @x
end
select pinming,dbo.x(pinming)
from a
group by pinming----结果
----H-24001 A B C 
----H-24002 AA BB 

解决方案 »

  1.   

    create table a (pinming varchar(10),peijian_name varchar(10),id int)---测试数据
    insert into a select 'H-24001','A',1
    insert into a select 'H-24001','B',2
    insert into a select 'H-24001','C',3
    insert into a select 'H-24002','AA',1
    insert into a select 'H-24002','BB',2select pinming,max(case when id=1 then peijian_name else '' end)  as T1,
    max(case when id=2 then peijian_name else '' end ) as T2,
    max(case when id=3 then peijian_name else '' end ) as T3
    from A
    group by pinming
      

  2.   

    DECLARE @T_sql as varchar(8000)
    set @T_sql=''
    select @T_sql=@T_sql + 'max(case when id=' + cast(T.id as varchar) +' then peijian_name else '''' end)  as T'+ cast(T.id as varchar) +',' from (select id from A group by id) T
    set @T_sql='select pinming,'+left(@T_sql,len(@T_sql)-1) + ' from A group by pinming'
    exec (@T_sql)