Try this:
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT('SUM(IF(category = ''',category,''', duration,NULL))AS ''',category, '''')) INTO @sql
FROM tblnon_oeedata;
SET @sql = CONCAT('SELECT productionDay, ', @sql, ' FROM tblnon_oeedata GROUP BY productionDay');
PREPARE stmt FROM @sql;
EXECUTE stmt;