一、何为行转列?
在搞清楚这一概率之前,不妨来认识一下我们mysql表二维表结构数据,例如学生成绩表格,属性有学生姓名,学生科目,成绩,表结构如下:
CREATE TABLE `test_9` (
`id` int(11) DEFAULT NULL,
`name` varchar(22) DEFAULT NULL,
`course` varchar(22) DEFAULT NULL,
`score` decimal(18,2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
初始化数据成绩,查询如下:
这是二维表格的数据内容,这么看起来对于老师而言很不直播,一般老师会使用Excel进行观看excel表格格式如下:
这样的数据格式对于老师而言就是想要的效果,通过观察我们发现,将couse里面的科目作为行展示,这样的转换就叫做行专列。
二、如何行专列
那么如何进行行专列了?需要通过mysql的group语句和CASE语句来实现。mysql实现语句如下:
SELECT
NAME '学生姓名',
max( CASE course WHEN 'java' THEN score END ) Java,
max( CASE course WHEN 'MySQL' THEN score END ) MySQL
FROM
test_9
GROUP BY NAME;
简单分析一下:group用在学生成绩是因为学生的科目有多钟,需要进行分组,使用max语句是为了取唯一值,正常情况学生A,某一个科目只能有一个程俊,不可能有多个,万一有多个那就取最大的一个成绩展示。