tip:先看文章第二节的几篇短博文再看本文更佳
不管行转列还是列转行使用时同平时用的group by
一样,一般要结合聚合函数使用(因为列名一定是唯一的,字段里的值并不一定是是唯一的,所以配合聚合函数使用)。(补充说明:行就是我们平时说的一条一条的记录,再具体点就是某一列的具体值;列就是字段,也就是列名)但是group by
并不属于行转列和列转行的一种,不要混淆了,只是使用场景类似都是给你进行分组。补充:group by
可以实现行转列是因为MySQL没有行转列的函数,便可用case when
和group by
配合实现行转列的功能而已。
再通俗点就可以把数据表的行和列看成坐标轴的横轴和纵轴,只不过横轴是固定的,也就是我们平时说的字段名、表头,而纵轴并不是固定的,它可以沿着表头移动。理解了这个就不用怕什么是行转列和列转行了,剩下的就是该行/列的其他字段进行聚合操作了。
group by
配合case when
或者if()
完成: