Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySql pilih nilai baris dinamis sebagai nama kolom

Dari pendekatan pertanyaan referensi menggunakan group_concat Anda dapat melakukannya, tetapi perhatikan satu hal saat id pekerjaan Anda meningkat per exec_id grup lalu group_concat pendekatan tidak akan optimal karena panjang default 1024 karakter untuk digabungkan dan untuk kolom dinamis Anda ini pasti akan melewati batas itu, tetapi batas ini dapat ditingkatkan seperti yang disebutkan dalam 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. Menggunakan SUM pada data FLOAT

  2. TAMPAK DROP MySQL

  3. Kesalahan Sintaks PHP PDO atau pelanggaran akses:1064 saat dimasukkan

  4. MySQL mengabaikan batasan NOT NULL

  5. Bagaimana cara menampilkan kesalahan untuk kueri MySQLi saya?