DELIMITER $$ USE `test`$$ DROP PROCEDURE IF EXISTS `getKriteria`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `getKriteria`() BEGIN SELECT GROUP_CONCAT(DISTINCT CONCAT( 'ifnull(SUM(case when K.nama_kriteria = ''', K.nama_kriteria, ''' then R.nilai_rangking end),0) AS `', K.nama_kriteria, '`' ) ) INTO @sql FROM `rangking` R LEFT JOIN `alternatif` A ON A.id_alternatif = R.id_alternatif LEFT JOIN `kriteria` K ON K.id_kriteria = R.id_kriteria; SET @sql = CONCAT('SELECT A.nama_alternatif, ', @sql, ' FROM `rangking` R LEFT JOIN `alternatif` A ON A.id_alternatif = R.id_alternatif LEFT JOIN `kriteria` K ON K.id_kriteria = R.id_kriteria GROUP BY A.nama_alternatif'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END$$ DELIMITER ;