declare @s varchar(8000)
set @s = 'select name'
select @s = @s+',['+subject+']=max(case subject when '''+subject  +''' then grade end)'
from (select distinct subject from table1) a
set @s = @s+',总分=sum(grade) from table1 group by name'
exec(@s)

解决方案 »

  1.   

    select
        姓名 = name,
        语文 = max(case subject when '语文' then grade end),
        数学 = max(case subject when '数学' then grade end),
        英语 = max(case subject when '英语' then grade end),
        总分 = sum(grade)
    from
        table1
    group by
        name