表: 成绩表 +-------------+---------+ 字段名称 类型 +-------------+---------+ 学号 int 课程 varchar 成绩 int +-------------+---------+ 该表的每一行表示某位学生的课程成绩 现需要行列进行转换,将课程列变成行 查询结果如下例所示。 示例 1: 输入: 表:成绩表 +---------+---------+---------+ 学号 课程 成绩 +---------+---------+---------+ 1 语文 80 1 数学 90 2 语文 75 2 数学 85 +---------+---------+---------+ 输出: +---------+---------+---------+ 学号 语文成绩 数学成绩 +---------+---------+---------+ 1 80 90 2 75 85 +---------+---------+---------+ 解释: 通过case when来判断课程成绩,再利用分组聚合去除0,从而实现列转行
示例1
输入
CREATE TABLE `成绩表`
(
`学号` INT,
`课程` VARCHAR(512),
`成绩` INT
);
INSERT INTO `成绩表` (`学号`, `课程`, `成绩`) VALUES
(1, '语文', 80),
(1, '数学', 90),
(2, '语文', 75),
(2, '数学', 85);
输出
学号|语文成绩|数学成绩
1|80|90
2|75|85
加载中...