Mysql-sql

1. 行转列

CREATE TABLE `grade` (
  `ID` int(10) NOT NULL AUTO_INCREMENT,
  `NAME` varchar(20) DEFAULT NULL,
  `COURSE` varchar(20) DEFAULT NULL,
  `SCORE` float DEFAULT '0',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

insert into grade(NAME, COURSE, SCORE)  values
("张三", "数学", 35),
("张三", "语文", 59),
("张三", "英语", 59),
("李四", "数学", 44),
("李四", "语文", 89),
("李四", "英语", 47),
("王五", "数学", 73),
("王五", "语文", 31),
("王五", "英语", 84),
("LiuC","数学",  99);
SELECT NAME ,
MAX(CASE course WHEN "数学" THEN score ELSE NULL END ) math,
MAX(CASE course WHEN "语文" THEN score ELSE NULL END ) chinase,
MAX(CASE course WHEN "英语" THEN score ELSE NULL END ) english
FROM grade GROUP BY NAME 

2.列转行

create table `grade2` (
	`name` char (30),
	`math` int (11),
	`chinase` int (11),
	`english` int (11)
); 
insert into `grade2` (`name`, `math`, `chinase`, `english`) values('张三','34','58','58');
insert into `grade2` (`name`, `math`, `chinase`, `english`) values('李四','45','87','45');
insert into `grade2` (`name`, `math`, `chinase`, `english`) values('王五','76','34','89');
SELECT `name`, "数学" course ,math AS score FROM grade2
UNION SELECT `name`, "语文" course ,chinase AS score FROM grade2
UNION SELECT `name`, "英语" course ,english AS score FROM grade2

猜你喜欢

转载自blog.csdn.net/Tiggcat/article/details/95220328
今日推荐