SELECT 学生姓名, 
    SUM(CASE 学科 WHEN '语文' THEN 成绩 END) AS 语文,
    SUM(CASE 学科 WHEN '数学' THEN 成绩 END) AS 数学,
    SUM(CASE 学科 WHEN '英语' THEN 成绩 END) AS 英语
FROM 表
GROUP BY 学生姓名
GO

解决方案 »

  1.   

    select 学生姓名,
           sum(case  学科 when 语文 then 学科 else 0 end) as 语文,
           sum(case  学科 when 数学 then 学科 else 0 end) as 数学,
           sum(case  学科 when 英语 then 学科 else 0 end) as 英语
    group by 学生姓名
      

  2.   

    select 学生姓名
    ,sum(case when 学科='语文' then 成绩 else 0 end) 语文
    ,sum(case when 学科='数学' then 成绩 else 0 end) 数学
    ,sum(case when 学科='英语' then 成绩 else 0 end) 英语
    from 表
    group by 学生姓名
      

  3.   

    SELECT 学生姓名, 
        SUM(CASE 学科 WHEN '语文' THEN 成绩 END) AS 语文,
        SUM(CASE 学科 WHEN '数学' THEN 成绩 END) AS 数学,
        SUM(CASE 学科 WHEN '英语' THEN 成绩 END) AS 英语
    FROM 表
    GROUP BY 学生姓名
    GO
      

  4.   

    declare @sql varchar(8000)
    set @sql = 'select 学生姓名'
    select @sql = @sql + ',sum(case 学科 when '''+学科+''' then 成绩 end) ['+学科+']'
      from (select distinct 学科 from 表) tem
    select @sql = @sql+' from 表 group by 学生姓名'
    exec(@sql)
    go