Mysql
 sql >> Database >  >> RDS >> Mysql

MySql seleziona i valori di riga dinamici come nomi di colonna

Come dall'approccio della domanda di riferimento sull'utilizzo di group_concat puoi farlo, ma nota una cosa poiché i tuoi ID lavoro aumentano per exec_id gruppo quindi group_concat approccio non sarà ottimale a causa della sua lunghezza predefinita di 1024 caratteri da concatenare e per le colonne dinamiche questo supererà sicuramente quel limite, ma questo limite può essere aumentato come menzionato 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;

Fiddle Demo