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

MySql wybierz dynamiczne wartości wierszy jako nazwy kolumn

Zgodnie z podejściem do pytania referencyjnego przy użyciu group_concat możesz to zrobić, ale zwróć uwagę na jedną rzecz, gdy identyfikatory Twoich zadań rosną z każdym exec_id group następnie group_concat podejście nie będzie optymalne ze względu na domyślną długość 1024 znaków do łączenia, a dla Twoich dynamicznych kolumn z pewnością przekroczy ten limit, ale ten limit można zwiększyć, jak wspomniano w 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskiwanie dziennej liczby zdarzeń, które nie zdarzają się codziennie

  2. Skonfiguruj dużą bazę danych w MySQL do analizy w R

  3. Połączyć tabele w dwóch różnych bazach danych?

  4. Jak wywołać procedurę składowaną MySQL z Railsów?

  5. Rails 5 Mysql UUID