mysql行轉列
阿新 • • 發佈:2019-01-22
DROP TABLE IF EXISTS `class_info`; CREATE TABLE `class_info` ( `student_name` varchar(50) NOT NULL, `class_name` varchar(50) NOT NULL, `score` double(30,0) DEFAULT NULL, PRIMARY KEY (`student_name`,`class_name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of class_info -- ---------------------------- INSERT INTO `class_info` VALUES ('李娜', 'java', '100'); INSERT INTO `class_info` VALUES ('李娜', 'mysql', '100'); INSERT INTO `class_info` VALUES ('隨朗', 'java', '100'); INSERT INTO `class_info` VALUES ('隨朗', 'mysql', '90'); INSERT INTO `class_info` VALUES ('隨朗', '語文', '100');
表結構和資料如上:
目表是如圖:圖一 轉換成 圖二
圖一
圖二
SELECT student_name, MAX( CASE class_name WHEN 'java' THEN score END ) java, MAX( CASE class_name WHEN 'mysql' THEN score END ) mysql, MAX( CASE class_name WHEN '語文' THEN score END ) 語文 FROM class_info GROUP BY student_name
下圖,語文有為null的
解決方案:
SELECT
student_name,
MAX(
CASE class_name
WHEN 'java' THEN
score
END
) java,
MAX(
CASE class_name
WHEN 'mysql' THEN
score
END
) mysql,
MAX(
CASE class_name
WHEN '語文' THEN
score
ELSE
0
END
) 語文
FROM
class_info
GROUP BY
student_name