BEGIN SELECT GROUP_CONCAT(DISTINCT CONCAT( 'ifnull(SUM(case when K.nama_kriteria = ''', K.nama_kriteria, ''' then R.nilai_normalisasi end),0) AS `', K.nama_kriteria, '`' ) ) INTO @sql FROM `detail_rangking` R LEFT JOIN `alternatif` A ON A.id_alternatif = R.id_alternatif LEFT JOIN `kriteria` K ON K.id_kriteria = R.id_kriteria LEFT JOIN `posisi` P ON P.id_posisi = R.id_posisi; SET @sql = CONCAT('SELECT A.nama_alternatif,', @sql, ', P.nama_posisi FROM `detail_rangking` R LEFT JOIN `alternatif` A ON A.id_alternatif = R.id_alternatif LEFT JOIN `kriteria` K ON K.id_kriteria = R.id_kriteria LEFT JOIN `posisi` P ON P.id_posisi = R.id_posisi GROUP BY P.nama_posisi DESC,A.nama_alternatif' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END