1. 程式人生 > >關於sql行轉列的理解

關於sql行轉列的理解

DELIMITER &&
CREATE PROCEDURE sp_count()
BEGIN
#課程名稱
DECLARE course_n VARCHAR(20);
#所有課程數量
DECLARE count INT;
#計數器
DECLARE i INT DEFAULT 0;
#拼接SQL字串
SET @s = 'SELECT name';
SET count = (SELECT  COUNT(distinct course) FROM grade2);
WHILE i < count DO
SET course_n = (SELECT course FROM grade2 LIMIT i,1);
SET @s = CONCAT(@s, ', SUM(CASE  course WHEN  ','\'', course_n,'\'',' THEN score END )',' AS ','\'',course_n,'\'');
SET i = i+1;
END WHILE;
SET @s = CONCAT(@s, ' FROM grade2 GROUP BY name');
#用於除錯
#SELECT @s;
PREPARE stmt FROM @s;
EXECUTE stmt;
END
&&
 
call sp_count();