怎么实现 MySQL 表的行转列 -- 032
♣题目部分 怎么实现 MySQL 表的行转列?yearmonthamount199212.1199222.2199232.3199111.1199121.2199131.3199141.4199242.4将上表转换为 yearm1m2m3m419911.11.21.31.419922.12.22.32.4 ♣答案部分 建表CREATE TABLE `abc` ( `year` int(32) , `month` int(32) , `amount` float(32,1) , PRIMARY key(year,month,amount) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `abc` VALUES (1992, 1, 2.1); INSERT INTO `abc` VALUES (1992, 2, 2.2); INSERT INTO `abc` VALUES (1992, 3, 2.3); INSERT INTO `abc` VALUES (1992, 4, 2.4); INSERT INTO `abc` VALUES (1991, 1, 1.1); INSERT INTO `abc` VALUES (1991, 2, 1.2); INSERT INTO `abc` VALUES (1991, 3, 1.3); INSERT INTO `abc` VALUES (1991, 4, 1.4); 答案SELECT year, SUM(CASE WHEN month=1 THEN amount ELSE 0 END) AS m1, SUM(CASE WHEN MONTH=2 THEN amount ELSE 0 END) AS m2, SUM(CASE WHEN month=3 THEN amount ELSE 0 END) AS m3, SUM(CASE WHEN month=4 THEN amount ELSE 0 END) AS m4 FROM abc GROUP BY year ORDER BY year;
About Me:小婷儿
● 提供OCP、OCM和高可用最实用的技能培训
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
有您的支持,小婷儿一定会越来越好!
♣题目部分 怎么实现 MySQL 表的行转列?yearmonthamount199212.1199222.2199232.3199111.1199121.2199131.3199141.4199242.4将上表转换为 yearm1m2m3m419911.11.21.31.419922.12.22.32.4 ♣答案部分 建表CREATE TABLE `abc` ( `year` int(32) , `month` int(32) , `amount` float(32,1) , PRIMARY key(year,month,amount) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `abc` VALUES (1992, 1, 2.1); INSERT INTO `abc` VALUES (1992, 2, 2.2); INSERT INTO `abc` VALUES (1992, 3, 2.3); INSERT INTO `abc` VALUES (1992, 4, 2.4); INSERT INTO `abc` VALUES (1991, 1, 1.1); INSERT INTO `abc` VALUES (1991, 2, 1.2); INSERT INTO `abc` VALUES (1991, 3, 1.3); INSERT INTO `abc` VALUES (1991, 4, 1.4); 答案SELECT year, SUM(CASE WHEN month=1 THEN amount ELSE 0 END) AS m1, SUM(CASE WHEN MONTH=2 THEN amount ELSE 0 END) AS m2, SUM(CASE WHEN month=3 THEN amount ELSE 0 END) AS m3, SUM(CASE WHEN month=4 THEN amount ELSE 0 END) AS m4 FROM abc GROUP BY year ORDER BY year; About Me:小婷儿 ● 提供OCP、OCM和高可用最实用的技能培训 ● 题目解答若有不当之处,还望各位朋友批评指正,共同进步 有您的支持,小婷儿一定会越来越好!