declare @s varchar(8000)
set @s=''
select @s=@s+',['+rtrim(科目)+']=max(case 科目 when '''+rtrim(科目)+''' then 教师 else '''' end)'
from 表 group by 科目
exec('select 班级'+@s+' from 表 group by 班级')

解决方案 »

  1.   

    --测试--测试数据
    create table 表(班级 varchar(10),教师 varchar(10),科目 varchar(10))
    insert 表 select '初一(1)','张三','数学'
    union all select '初一(1)','张六','英语'
    union all select '初一(1)','王五','社会'
    union all select '初一(1)','李四','科学'
    union all select '初三(1)','小三','数学'
    union all select '初三(1)','张开','英语'
    union all select '初三(1)','李方','社会'
    union all select '初三(1)','小黄','电脑'
    go--查询
    declare @s varchar(8000)
    set @s=''
    select @s=@s+',['+rtrim(科目)+']=max(case 科目 when '''+rtrim(科目)+''' then 教师 else '''' end)'
    from 表 group by 科目
    exec('select 班级'+@s+' from 表 group by 班级')
    go--删除测试
    drop table 表/*--测试结果班级         电脑         科学         社会         数学         英语         
    ---------- ---------- ---------- ---------- ---------- ---------- 
    初三(1)      小黄                    李方         小三         张开
    初一(1)                 李四         王五         张三         张六
    --*/
      

  2.   

    zjcxc(邹建),你真是神啊!!!你的答案总是准确、及时,佩服、佩服!!!!!!!!!