select 学号,姓名
  ,sum(case when 科目='语文' then 成绩 end) 语文
  ,sum(case when 科目='数学' then 成绩 end) 数学
  ,sum(case when 科目='化学' then 成绩 end) 化学
  ,sum(case when 科目='外语' then 成绩 end) 外语
from 表一 group by 学号,姓名

解决方案 »

  1.   

    insert into 表2 (学号,姓名, 语文, 数学,化学,外语) select 学号,姓名,max(case when 科目='语文' then 成绩 end )
    ,姓名,max(case when 科目='数学' then 成绩 end )
    ,姓名,max(case when 科目='化学' then 成绩 end )
    ,姓名,max(case when 科目='外语' then 成绩 end )
    from 表一 group by 学号,姓名
      

  2.   

    declare @sql varchar(8000)
    set @sql = 'select 学号,姓名'
    select @sql = @sql + ',sum(case 科目 when '''+科目+''' then 成绩 else 0 end) as ['+科目+']'
      from (select distinct 科目 from 有一表) as a
    select @sql = @sql+' into 新表名 from 有一表 group by 学号,姓名'
    exec(@sql)
    select * from 新表名
      

  3.   

    select * from(
    select 学号 ,max(姓名) as '姓名' ,sum(case when 科目='语文' then 成绩 else 0 end) as '语文' ,sum(case when 科目='数学' then 成绩 else 0 end) as '数学',...
    ,sum(case when 科目='外语' then 成绩 else 0 end) as '外语' from 表一 group by 学号  order by 学号 
      

  4.   


    select 学号 ,max(姓名) as '姓名' ,sum(case when 科目='语文' then 成绩 else 0 end) as '语文' ,sum(case when 科目='数学' then 成绩 else 0 end) as '数学',...
    ,sum(case when 科目='外语' then 成绩 else 0 end) as '外语' into 表2 from 表一 group by 学号
      

  5.   


    Declare @SqlTxt VarChar(8000)
    Set @SqlTxt=''
    Select Distinct 科目 Into #tmp1 from 表1
    Select @SqlTxt=@SqlTxt+科目+'=Max(Case when 科目='''+科目+''' then 成绩 else 0 end),' from #tmp1
    Set @SqlTxt=Left(@SqlTxt,Len(@SqlTxt)-1)
    Exec('Select 学号,姓名,'+@SqlTxt+' From 表1 Group by 学号,姓名')