sql >> Databasteknik >  >> RDS >> Mysql

MySql väljer dynamiska radvärden som kolumnnamn

Från referensfrågans tillvägagångssätt att använda group_concat du kan göra det, men notera en sak eftersom dina jobb-ID ökar per exec_id grupp och sedan group_concat tillvägagångssätt kommer inte att vara optimalt på grund av dess standardlängd på 1024 tecken att sammanfoga och för dina dynamiska kolumner kommer detta säkert att passera den gränsen, men denna gräns kan ökas som nämnts i 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. rake db:create - sorteringsproblem

  2. InMemory DUBLIKAT Förvirring i Oracle RAC

  3. Hur man skapar främmande nyckelbegränsningar med ON DELETE SET NULL-alternativet i SQL Server - SQL Server / TSQL Tutorial Del 81

  4. hur man får det totala antalet rader med mysqli