mysql行列转置-图文详解

我们想跑一个数据,格式如下图:

mysql行列转置-图文详解_第1张图片

但是我们一般的mysql语句跑出来的数据却是下面这样,不但不方便查看,在数据量比较大的时候,我们需要每个地区都转置粘贴一遍,耗时耗力还容易出错,下面提供一个方法,可以让跑出来的数据就是你一开始想要的样子(上图),不但方便线上化的查看,也方便线下的粘贴。

mysql行列转置-图文详解_第2张图片mysql行列转置-图文详解_第3张图片


Mysql 行列转置方法

代码 - case when语句:

SELECT t.`地区`,
COUNT(DISTINCT (case WHEN t.班级 =1 THEN t.学号 end)) AS'班级1',
COUNT(DISTINCT (case WHEN t.班级 =2 THEN t.学号 end)) AS'班级2',
COUNT(DISTINCT (case WHEN t.班级 =3 THEN t.学号 end)) AS'班级3',
COUNT(DISTINCT (case WHEN t.班级 =4 THEN t.学号 end)) AS'班级4'
FROM cm1_0625 t 
where t.`地区`<>'' GROUP BY 1;

代码 - IF语句:

SELECT t.`地区`,
COUNT(DISTINCT IF (t.班级 =1 , t.学号 ,0)) AS'班级1',
COUNT(DISTINCT IF (t.班级 =2 , t.学号 ,0)) AS'班级2',
COUNT(DISTINCT IF (t.班级 =3 , t.学号 ,0)) AS'班级3',
COUNT(DISTINCT IF (t.班级 =4 , t.学号 ,0)) AS'班级4'
FROM cm1_0625 t 
where t.`地区`<>'' GROUP BY 1;

运行结果:

mysql行列转置-图文详解_第4张图片


你可能感兴趣的:(MySQL)