À partir de l'approche de la question de référence consistant à utiliser group_concat
vous pouvez le faire, mais notez une chose lorsque vos identifiants de travail augmentent par exec_id
group puis group_concat
approche ne sera pas optimale en raison de sa longueur par défaut de 1024 caractères à concaténer et pour vos colonnes dynamiques, cela dépassera sûrement cette limite, mais cette limite peut être augmentée comme mentionné dans 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;