mysql中表的行列转换

以下面的例子做行列转换

创建表t_score

Student_id

Student_name

Course_name

Score

1

小明

语文

92

1

小明

数学

84

1

小明

英语

73

2

小红

语文

86

2

小红

数学

72

2

小红

英语

63

create table t_score(
    student_id int(11) not null comment '学号',
    student_name varchar(20) not null comment '学生名字',
    course_name varchar(20) not null comment '课程名称',
    score int(11) not null comment '成绩'
)engine=innodb default charset=utf8 comment '学生成绩表';

insert into t_score values 
(1, '小明', '语文', 92),
(1, '小明', '数学', 84),
(1, '小明', '英语', 73),
(2, '小红', '语文', 86),
(2, '小红', '数学', 72),
(2, '小红', '英语', 63);

编写sql,查询结果如下:

Student_id

Student_name

语文

数学

英语

1

小明

92

84

73

2

小红

86

72

63

 

SELECT
    max(student_id) student_id,
    student_name,
    max(
        CASE course_name
        WHEN '语文' THEN
            score
        END
    ) '语文',
    max(
        CASE course_name
        WHEN '数学' THEN
            score
        END
    ) '数学',
    max(
        CASE course_name
        WHEN '英语' THEN
            score
        END
    ) '英语'
FROM
    t_score
GROUP BY
    student_name;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值