Mysql 行列转置
2016-03-15 11:00
393 查看
建表代码
if语句使用:
Case语句使用
行列转置
/* Navicat MySQL Data Transfer Source Server : 115.28.24.231 Source Server Version : 50621 Source Host : 115.28.24.231:3306 Source Database : test Target Server Type : MYSQL Target Server Version : 50621 File Encoding : 65001 Date: 2016-03-15 11:50:49 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for student -- ---------------------------- DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `name` varchar(11) DEFAULT NULL, `Math` int(11) DEFAULT NULL, `English` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of student -- ---------------------------- INSERT INTO `student` VALUES ('甲', '89', '78'); INSERT INTO `student` VALUES ('乙', '77', '81'); INSERT INTO `student` VALUES ('丙', '87', '98');
if语句使用:
SELECT IF ( name = 'ww', '万', '其他' ) AS VALUE, math, english FROM student
Case语句使用
SELECT ( case username WHEN 'ww' THEN '万' ELSE '其他' END ) AS VALUE, math, english FROM student
行列转置
SELECT col2 AS '课程', #甲的xx课程的成绩 sum(IF(NAME = '甲', col3, 0)) AS '甲', #乙的xx课程的成绩 sum(IF(NAME = '乙', col3, 0)) AS '乙', #丙的xx课程的成绩 sum(IF(NAME = '丙', col3, 0)) AS '丙' FROM ( #形成name(甲乙丙),col2(math,english),col3(col2对应的成绩) SELECT NAME, '数学' AS col2, student.math AS col3 FROM student GROUP BY NAME UNION SELECT NAME, '英语' AS col2, student.english AS col3 FROM student GROUP BY NAME ) AS val #根据课程分组 GROUP BY col2
相关文章推荐
- MySQL的列类型范围
- MySql主主(主从)同步配置详解
- Red Hat 6.5 编译安装Mysql 5.7.11
- MySQL基本了解与使用
- 如何搭建基于ldap和mysql的gerrit服务
- mysql(八)日志介绍
- 一次mysql慢查询事故分析
- 【转】MySQL编码问题
- mysql显示中文乱码
- MySQL 事务没有提交导致 锁等待 Lock wait timeout exceeded
- 关于MySQL数据导出导入方法
- MySQL数据导出导入的方法
- Mysql查询一个表的所有字段名
- Emoji表情符号录入MySQL数据库报错的解决方案
- [mysql] mysql explain 使用
- MYSQL数据库备份与恢复
- 有感mysql中存放图片的方法以及mysql的相关操作
- Mysql数据库分库和分表方式(常用)
- mysql 查询执行最多的sql 语句
- MySql日期比较