select 学号,姓名
,sum(case when 科目='语文' then 成绩 end) 语文
,sum(case when 科目='数学' then 成绩 end) 数学
,sum(case when 科目='化学' then 成绩 end) 化学
,sum(case when 科目='外语' then 成绩 end) 外语
from 表一 group by 学号,姓名
,sum(case when 科目='语文' then 成绩 end) 语文
,sum(case when 科目='数学' then 成绩 end) 数学
,sum(case when 科目='化学' then 成绩 end) 化学
,sum(case when 科目='外语' then 成绩 end) 外语
from 表一 group by 学号,姓名
,姓名,max(case when 科目='数学' then 成绩 end )
,姓名,max(case when 科目='化学' then 成绩 end )
,姓名,max(case when 科目='外语' then 成绩 end )
from 表一 group by 学号,姓名
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 新表名
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 学号
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 学号
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 学号,姓名')