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