Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wybierz dynamiczne wartości wierszy jako nazwy kolumn w określonej kolejności

Możesz to zrobić, dodając ORDER BY start_time ASC w Twoim GROUP_CONCAT funkcja

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`' 
         )
          ORDER BY start_time ASC        
 )
  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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można uzyskać wielu jednostek tabeli za pomocą procedury przechowywanej przy użyciu hibernacji

  2. jak utworzyć klucz odniesienia obcego dla klucza podstawowego kompozycji

  3. dziwne kodowanie znaków przechowywanych danych, stary skrypt pokazuje je dobrze, nowy nie

  4. DAYOFYEAR() Przykłady – MySQL

  5. INSERT..RETURNING nie działa w JOOQ