mysql之行轉列與列轉行

mysql之行轉列與列轉行是數據查詢的常見操做,以更好的來展現數據,下面就詳細說說怎麼實現。mysql

 

 

行轉列sql

行轉列的話,就是將一條一條的行數據記錄轉換爲一條列數據展現,通常來講是根據某一列來作彙總數據的操做,看着更直觀,一目瞭然。
spa

  

建表語句:code

1 CREATE TABLE `st_grade` ( 2   `id` int(10) NOT NULL AUTO_INCREMENT, 3   `stu_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, 4   `course` varchar(20) DEFAULT NULL, 5   `score` float(4,1) DEFAULT NULL, 6   PRIMARY KEY (`id`) 7 ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

 

插入數據:blog

1 INSERT INTO `st_grade` VALUES ('1', '張三', '語文', '86.0'); 2 INSERT INTO `st_grade` VALUES ('2', '張三', '數學', '90.0'); 3 INSERT INTO `st_grade` VALUES ('3', '張三', '英語', '75.0'); 4 INSERT INTO `st_grade` VALUES ('4', '李四', '語文', '92.0'); 5 INSERT INTO `st_grade` VALUES ('5', '李四', '數學', '93.0'); 6 INSERT INTO `st_grade` VALUES ('6', '李四', '英語', '96.0'); 7 INSERT INTO `st_grade` VALUES ('7', '王五', '語文', '82.0'); 8 INSERT INTO `st_grade` VALUES ('8', '王五', '數學', '71.0'); 9 INSERT INTO `st_grade` VALUES ('9', '王五', '英語', '74.0');

 

查詢語句:ci

1 select stu_name , 2   max(case course when '語文' then score else 0 end ) 語文, 3   max(case course when '數學' then score else 0 end ) 數學, 4   max(case course when '英語' then score else 0 end ) 英語 5 from st_grade 6 group by stu_name;

 

列轉行數學


列轉行的話,就是將一條列數據轉換爲一條一條的行數據記錄展現,將某一行數據根據某些列進行分組操做。
io

 

 建表語句:class

1 CREATE TABLE `st_grade` ( 2   `id` int(10) NOT NULL AUTO_INCREMENT, 3   `stu_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, 4   `course` varchar(20) DEFAULT NULL, 5   `score` float(4,1) DEFAULT NULL, 6   PRIMARY KEY (`id`) 7 ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

 

插入語句:select

1 INSERT INTO `st_grade` VALUES ('1', '張三', '語文', '86.0'); 2 INSERT INTO `st_grade` VALUES ('2', '張三', '數學', '90.0'); 3 INSERT INTO `st_grade` VALUES ('3', '張三', '英語', '75.0'); 4 INSERT INTO `st_grade` VALUES ('4', '李四', '語文', '92.0'); 5 INSERT INTO `st_grade` VALUES ('5', '李四', '數學', '93.0'); 6 INSERT INTO `st_grade` VALUES ('6', '李四', '英語', '96.0'); 7 INSERT INTO `st_grade` VALUES ('7', '王五', '語文', '82.0'); 8 INSERT INTO `st_grade` VALUES ('8', '王五', '數學', '71.0'); 9 INSERT INTO `st_grade` VALUES ('9', '王五', '英語', '74.0');

 

查詢語句:

1 select stu_name, '語文' course , cn_score as score 2     from st_grade2 3     union select stu_name, '數學' course, math_score as score from st_grade2 4     union select stu_name, '英語' course, en_score as score from st_grade2 5 order by stu_name,course;

 

以上代碼能夠直接複製來驗證,沒有錯誤。

相關文章
相關標籤/搜索