当前位置:首页 > My SQL > 正文内容

MYSQL横表变竖表

Z先生5年前 (2020-06-11)My SQL802

原始数据

1095882-20170713111234462-561827214.png

目标数据

1095882-20170713111329072-838085850.png


方法一:SQL语句:

select name as '姓名', 
  max(case subject when '语文' then result else 0 end) '语文',
  max(case subject when '数学' then result else 0 end) '数学',
  max(case subject when '英语' then result else 0 end) '英语'
from student group by name;

如果是汇总,语句中max换sum

精华解析:

max(case subject when '语文' then result else 0 end)

如果subject字段='语文',那么读取 result字段,否则就是0,然后再MAX一下,就取到有成绩的值了。可以用汇总统计


方法二(笨方法,硬拼):SQL语句:

select s.name as '姓名',
    s1.result as '语文',
    s2.result as '数学',
    s3.result as '英语'
from student s 
    left join student s1 on s1.name=s.name and subject='语文'
    left join student s2 on s2.name=s.name and subject='数学'
    left join student s3 on s3.name=s.name and subject='英语' ;


分享给朋友:

相关文章

Mysql 批量设置未设置默认值字段的默认值。

DROP PROCEDURE IF EXISTS `sp_setdefaultvalue`; CREATE PROCEDURE `sp_set...

mysql重置root密码(mysql忘记root密码的处理方式)

1、修改my.cnf(linux)/my.ini(Windows)文件,在[mysqld]下面加上skip-grant-tables配置选项;2、重启mysql服务;linux一般为:service...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。
请先 登录 再评论,若不是会员请先 注册