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
作者:Glen.He
出处:http://www.cnblogs.com/puresoul/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。