Vanaf de benadering van de referentievraag voor het gebruik van group_concat
u kunt dit doen, maar let op één ding, aangezien uw taak-ID's toenemen per exec_id
groep en vervolgens group_concat
benadering zal niet optimaal zijn vanwege de standaardlengte van 1024 tekens om samen te voegen en voor uw dynamische kolommen zal dit zeker die limiet overschrijden, maar deze limiet kan worden verhoogd zoals vermeld in 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;