mysql表行列互换
来源:互联网 发布:电子商务教学软件下载 编辑:程序博客网 时间:2024/06/05 06:15
1. 问题描述
查询下面数据库表数据
namecoursescore张三语文88张三数学92张三物理93李四语文79李四数学99李四物理94
查询结果如下:
name语文数学物理张三889293李四799994
2. 解决方法
测试数据:
-- ------------------------------ Table structure for `score`-- ----------------------------DROP TABLE IF EXISTS `score`;CREATE TABLE `score` ( `name` varchar(10) DEFAULT NULL, `course` varchar(10) DEFAULT NULL, `score` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Records of score-- ----------------------------INSERT INTO `score` VALUES ('张三', '语文', '88');INSERT INTO `score` VALUES ('张三', '数学', '92');INSERT INTO `score` VALUES ('张三', '物理', '93');INSERT INTO `score` VALUES ('李四', '语文', '79');INSERT INTO `score` VALUES ('李四', '数学', '99');INSERT INTO `score` VALUES ('李四', '物理', '94');
1. 使用IF()函数
SELECT name, SUM(IF(course = '语文',score,0)) as "语文",SUM(IF(course = '数学',score,0)) as "数学",SUM(IF(course = '物理',score,0)) as "物理"FROM score GROUP BY name;
2. 使用CASE WHEN
SELECT name, SUM(CASE WHEN course = '语文' THEN score ELSE 0 END) as "语文",SUM(CASE WHEN course = '数学' THEN score ELSE 0 END) as "数学",SUM(CASE WHEN course = '物理' THEN score ELSE 0 END) as "物理"FROM score GROUP BY name;
阅读全文
0 0
- mysql表行列互换
- mysql表行列互换
- mysql行列互换
- mysql 行列互换2
- mysql 行列互换,列列互换数据,数组列转多行数据
- 行列互换
- 行列互换
- 行列互换
- 行列互换
- 行列互换
- 行列互换
- ACCESS交叉表(行列互换)
- 利用dataset行列互换
- sql行列互换问题
- 经典的行列互换
- SQL2000 行列互换
- SQL 行列互换
- [SQLServer]数据库行列互换
- Java Web开发知识(1)
- JAVA——算术运算符
- MyBatis自动生成工具去掉注释的配置
- wamp的mysq无法启动
- .NET 连接oracle
- mysql表行列互换
- 学习记录
- ibatis嵌套查询
- 区分IE6,IE7,IE8
- AccessibiltiyService自动获取用户权限增强产品体验的方法
- git使用入门----初始化和上传
- 简单的Spring+Quartz动态配置任务时间
- Dialog.Alert黑色背景
- 数据结构实验之栈:行编辑器(栈)