select StudentID ,sum(case CourseName when '通信原理' then score else 0 end) 通信原理,sum(case CourseName when ' 编译原理' then score else 0 end)  编译原理,
sum(case CourseName when '人工智能' then score else 0 end) 人工智能,
sum(case CourseName when '软件工程' then score else 0 end)  软件工程
from tablename group by StudentID

解决方案 »

  1.   

    select StudentID ,sum(case CourseName when '通信原理' then score else 0 end) 通信原理,sum(case CourseName when '编译原理' then score else 0 end)  编译原理,
    sum(case CourseName when '人工智能' then score else 0 end) 人工智能,
    sum(case CourseName when '软件工程' then score else 0 end)  软件工程
    from tablename group by StudentID
      

  2.   

    declare @sql varchar(8000)
    set @sql = 'select StudentID'
    select @sql = @sql + ',sum(case CourseName when '''+CourseName+''' then Score else 0 end) ['+CourseName+']'
      from (select distinct CourseName from 有一表) as a
    select @sql = @sql+' from 有一表 group by StudentID'exec(@sql)
    go