sql server行转列的一种实现方法

  对于有些业务来说,数据在表中的存储和其最终的表现恰好相当于把源表倒转,那么这个时候我们就碰到了如何把行转化为列的问题,为了简化问题,我们且看如下查询出来的数据,您不必关心表的设计以及sql语句:

  源表如下:(表名为info)

    

 

------------------------------------------------------------------------

  select username,   

     语文=(case course when '语文' then grade else 0 end),   

     数学=(case course when '数学' then grade else 0 end),    

      政治=(case course when '政治' then grade else 0 end

  from info

  看看我们的执行结果:

  

 看到这后,我们都知道应该做什么了,进行分组,按姓名进行分组,并且对三门课程分别求和;

------------------------------------------------------------------------ 

  目标结果:

     

 

  SQL语句为:  

select username,
   语文=sum(case course when '语文' then grade else 0 end),
   数学=sum(case course when '数学' then grade else 0 end),
   政治=sum(case course when '政治' then grade else 0 end)
from info group by username

    select username,   

         语文=sum(case course when '语文' then grade else 0 end),  

         数学=sum(case course when '数学' then grade else 0 end),   

        政治=sum(case course when '政治' then grade else 0 end)

    from info

    group by username

 

 

posted @ 2010-03-31 22:35  贺满  阅读(747)  评论(0编辑  收藏  举报