От подхода на референтния въпрос за използване на group_concat
можете да го направите, но имайте предвид едно нещо, тъй като вашите идентификационни номера на работа се увеличават на exec_id
група след това group_concat
подходът няма да е оптимален поради неговата дължина по подразбиране от 1024 знака за конкатениране и за вашите динамични колони това със сигурност ще премине това ограничение, но това ограничение може да бъде увеличено, както е посочено в documentation
SET @sql = NULL;
SELECT GROUP_CONCAT(DISTINCT
CONCAT('MAX(CASE WHEN job_id = ''',
job_id,
''' THEN start_time END) `',
job_id,
'_start`',
',',
'MAX(CASE WHEN job_id = ''',
job_id,
''' THEN end_time END) `',
job_id,
'_end`'
)
)
INTO @sql
FROM t;
SET @sql = CONCAT('SELECT exec_id, ', @sql, '
FROM t
GROUP BY exec_id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;