当前位置:首页 > My SQL

MYSQL横表变竖表

Z先生6年前 (2020-06-11)My SQL1011

原始数据

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 中优化 SQL 语句查询常用的 30 种方法

1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎…

Mysql中通过身份证计算年龄

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

mysq42000错误只1071解决方案

欣达CMS在安装过程中,出现以下错误提示:SQLSTATE[42000]: Syntax error or access violation:&nbs…

MySQL中InnoDB和MyISAM对比及索引原理区别

MySQL中InnoDB和MyISAM对比及索引原理区别

InnoDB和MyISAM是很多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,5.7之后就不一样了1、事务和外键InnoDB具有事务,支持4个事务隔离级别,回滚,崩溃修复能力和多版本并…

更改mysql默认引擎MyISAM|InnoDB

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

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。