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

MYSQL横表变竖表

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

原始数据

1095882-20170713111234462-561827214.png

目标数据

1095882-20170713111329072-838085850.png

方法一:SQL语句:

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重置root密码(mysql忘记root密码的处理方式)

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

Mysql中通过身份证计算年龄

substring()函数用来截取出生年月日year(now())- year(substring(borrower_idcard,7,8)) age, 用来计算年龄SELECT  &nb...

更改mysql默认引擎MyISAM|InnoDB

打开MySQL配置文件,Win下面默认是my.ini,Linux下面默认是my.conf[mysqld]下面加入(如果有则修改):default-storage-engine = ...

发表评论

访客

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