mysql 橫變豎 豎變橫


豎變橫

創表  

CREATE TABLE `score` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `project` varchar(50) DEFAULT NULL,
  `score` varchar(3) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;

添加數據

INSERT INTO `score` VALUES ('1', '小明', '語文', '90');
INSERT INTO `score` VALUES ('2', '小明', '數學', '70');
INSERT INTO `score` VALUES ('3', '小明', '英語', '60');
INSERT INTO `score` VALUES ('4', '小紅', '語文', '97');
INSERT INTO `score` VALUES ('5', '小紅', '數學', '60');
INSERT INTO `score` VALUES ('6', '小紅', '英語', '80');
INSERT INTO `score` VALUES ('7', '小亮', '語文', '70');
INSERT INTO `score` VALUES ('8', '小亮', '數學', '80');
INSERT INTO `score` VALUES ('9', '小亮', '英語', '60');

 豎變橫

select
	`name` "姓名",
	max(case project when '語文' THEN score ELSE 0 END) "語文",
	max(case project when '數學' THEN score ELSE 0 END) "數學",
	max(case project WHEN '英語' THEN score ELSE 0 END) "英語"
from score group by `name`

  

橫變豎

創表

CREATE TABLE `student` (
  `id` varchar(32) NOT NULL,
  `姓名` varchar(50) NOT NULL,
  `語文` int(11) DEFAULT NULL,
  `數學` int(11) DEFAULT NULL,
  `物理` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

添加數據

INSERT INTO `student1` VALUES ('0001', '小張', '93', '84', '99');
INSERT INTO `student1` VALUES ('0002', '小馬', '86', '92', '90');

橫變豎

select * from 
(select
	`姓名` 'name','語文'as'project',`語文` 'score'
from student group by `name`
UNION ALL
select
	`姓名` 'name','數學'as'project',`數學` 'score'
from student
UNION ALL
select
	`姓名` 'name','物理'as'project',`物理` 'score'
from student
)t order by `name`

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM