создайте статический запрос:
select id_pegawai,
max(if(tanggal="2019-06-13", presensi, null)) as "2019-06-13",
max(if(tanggal="2019-06-14", presensi, null)) as "2019-06-14"
from yourtable
group by id_pegawai;
создайте динамический запрос:
SET @sql = NULL;
SELECT
GROUP_CONCAT(
DISTINCT
CONCAT(
'max(if(tanggal="',
tanggal,
'", presensi, null)) as "',
tanggal,
'"'
)
) into @sql
FROM yourtable;
SET @sql = CONCAT('SELECT id_pegawai, ',
@sql, ' FROM yourtable GROUP BY id_pegawai');
Выполните свой динамический запрос:
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
на основании этого сообщения:http://buysql.com/mysql/14-how-to-automate-pivot-tables.html