鹏--扶摇直上

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

有如下数据: (不一定只有这几个类别)

    姓名    科目        成绩        

    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)

posted on 2013-11-05 20:46  xinyu's  阅读(663)  评论(0编辑  收藏  举报