小白第一次做这个东西,稍微研究了一下.把结论在这里写一下.有错误之处,请大佬们指点
Mysql行转列
结果集如下
我们可以分析这个这个结果集.很不适合后台处理.
目标结果集:
以月份作为嗯.我觉得是一个条件.查询的一个主要的展示条件.
我们需要根据类型type…来展示出来该类型type的所有数量和金额.前提是以month分组
select month,
max(case type when "0" then number else 0 end) "0类型数量",
max(case type when "2" then number else 0 end) "2类型数量",
max(case type when "3" then number else 0 end) "3类型数量",
max(case type when "0" then money else 0 end) "0类型金额",
max(case type when "2" then money else 0 end) "2类型金额",
max(case type when "3" then money else 0 end) "3类型金额"
from
(select MONTH(CZSJ) as 'month',DJLX as 'type', COUNT(DJLX) as 'number' ,SUM(HJJE) as "money" from i_billmain where CZSJ like "2018%" group by MONTH(CZSJ),DJLX) as y
group by month;
sql如上.from里面是原结果集.
我们需要根据月份分组.来我们看一下这个中间的这一堆啥意思…
case 这里是个列名 when 这里是这个列名的值
因为我们是要让type作为列.所以这里是type和type的值.
case type when “0” then 显示的值.
我写的是number
即type = 0 的 number的值.这个值就是这种类型的数量
else就是如果没有number他的值是多少.我填的0
结尾跟end.至于为什么要用max.是要这里面每一个条件都要执行一次.因为case可能是只执行一次吧.这个是我猜的.哈哈…我也不知道为什么. 后面就相当于别名了.as Xxx…只不过as省略了.
因为你要唯一的月份.所以要根据month分组.
但是我想要12个月份都显示怎么办???..我也不知道