有如下数据: (不一定只有这几个类别)
姓名 科目 成绩
a subject1 83
a subject2 74
a subject3 93
b subject1 70
b subject2 80
b subject3 90
....................
现要得到这样的数据
姓名 subject1 subject2 subject3 .......
a 83 74 93
b 70 80 90
可以使用如下sql达到效果
declare @v_sql varchar(8000)
set @v_sql= 'select 姓名 '
select @v_sql=@v_sql+' , max(case 科目 when '''+ subject + ''' then 分数 else 0 end ) '+subject from ( select distinct 科目 as subject from table ) a
set @v_sql =' from table group by 姓名 '
exec(@v_sql)