declare @sql varchar(8000)
set @sql = 'select 姓名'
select @sql = @sql + ',sum(case 科目 when '''+科目+''' then 分数 end) ['+科目+']'
  from (select distinct 科目 from 学生考试信息表) as a
select @sql = @sql+' from 学生考试信息表 group by 姓名'exec(@sql)
go

解决方案 »

  1.   

    Select 姓名,sum(case when 科目 = '语文' then 分数 else 0 end) as 语文,
    sum(case when 科目 = '数学' then 分数 else 0 end) as 数学
    from 学生考试信息表 group by 姓名
      

  2.   

    Select 姓名,sum(case when 科目 = '语文' then 分数 else 0 end) as 语文,
    sum(case when 科目 = '数学' then 分数 else 0 end) as 数学
    from 学生考试信息表 group by 姓名
      

  3.   

    select 姓名, sum(case when 科目='语文' then 分数 end) as 语文 , sum(case when 科目='数学' then 分数 end) as 数学  from 学生考试信息表 group by 姓名
      

  4.   

    select 姓名,
    sum(case when 科目 = '语文' then 分数 else 0 end) as 语文,
    sum(case when 科目 = '数学' then 分数 else 0 end) as 数学
    from 学生考试信息表 
    group by 姓名
      

  5.   

    declare @s varchar(3000)
    select distinct 科目 into #t from table1
    set @s = 'select 姓名'
    select @s = @s + ',sum(case when 科目 ='''+ 科目 + ''' then 分数 else 0 end) as [' +科目+']'  from #t order by 科目
    set @s = @s + ' from talbe1 group by 姓名'
    exec (@s)
    愉快的登山者       ⊙
    ◢◣◢◣◢◣
      

  6.   

    参考:
    create table #(a varchar(100),b int)
    insert # values('aa',11)
    insert # values('bb',1)
    insert # values('aa',45)
    insert # values('cc',81)
    insert # values('a',11)
    insert # values('aay',561)
    insert # values('a',14)declare @sql varchar(8000)
    set @sql = 'select '
    select @sql = @sql + 'sum(case a when '''+a+''' 
                              then b else 0 end) '+a+'的数量,'
      from (select distinct a from #) as aselect @sql = left(@sql,len(@sql)-1) + ' from #'exec(@sql)drop table #
      

  7.   

    declare @s varchar(3000)
    select distinct 科目 into #t from 学生考试信息表
    set @s = 'select 姓名'
    select @s = @s + ',sum(case when 科目 ='''+ 科目 + ''' then 分数 else 0 end) as [' +科目+']'  from #t order by 科目
    set @s = @s + ' from 学生考试信息表 group by 姓名'
    drop table #t
    exec (@s)
    ---通过 谢谢