同事提出了一个问题,然后帮助解决了一下
只不过解决过程也是百度的,
同事提问:我这边数据里面有每个人4个都的分数,有没有办法查询出来 让他每个人合成一行 后面几列分别是每个季度的分数
一开始我想到的是 用GROUP_CONCAT(),
sql 如下 SELECT name,GROUP_CONCAT(fen) FROM test GROUP BY `name`;
但是他想要的是一行多列,就查了一下百度
看到了一个方法
SELECT name,
MAX(case jidu when 1 then fen ELSE 0 END) '季度1',
MAX(case jidu when 2 then fen else 0 end) '季度2',
MAX(case jidu when 3 then fen ELSE 0 END) '季度3',
MAX(case jidu when 4 then fen else 0 end) '季度4'
FROM test
group BY name
发现可以用,但是给我自己留了一个疑惑.为什么会用到max()函数.
我试了一下去掉max()函数,除了季度1还能正常显示,别的都是0