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