sql >> Databáze >  >> RDS >> Mysql

MySql vybere dynamické hodnoty řádků jako názvy sloupců

Z přístupu referenční otázky pomocí group_concat můžete to udělat, ale všimněte si jedné věci, protože vaše ID úloh se zvyšuje o exec_id group a poté group_concat přístup nebude optimální kvůli jeho výchozí délce 1024 znaků ke zřetězení a pro vaše dynamické sloupce to jistě překročí tento limit, ale tento limit lze zvýšit, jak je uvedeno v 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



  1. sql server:odstraňte všechny řádky všech tabulek

  2. Jak formátovat data v Oracle

  3. Jak přidat datum a časové razítko do INSERTu přes PHP s mySQL?

  4. Jak zabránit automatickému vypnutí SQL Server LocalDB?