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

Kolom tabel Pivot dinamis mysql

SQL dinamis Anda baik-baik saja kecuali untuk satu hal. Ini memiliki kolom ambigu project_id di sebelah kiri kedua Anda bergabung, Ganti saja dengan pt.project_id atau trd.project_id dan itu akan memberikan hasil yang diinginkan.

SET @sql = NULL;
    SELECT
      GROUP_CONCAT(DISTINCT
        CONCAT(
          'max(case when dc.demographic_name = ''',
          demographic_name,
          ''' then trd.demographic_value end) AS ',
          replace(demographic_name, ' ', '')
        )
      ) INTO @sql
    from demographic_categories;

SET @sql = CONCAT('SELECT pt.test_id, pt.group_id,
', @sql,'
from test_demographic_requirements trd
LEFT JOIN demographic_categories dc ON trd.demographic_id = dc.demographic_id
LEFT JOIN project_tests pt ON pt.test_id = trd.test_id and pt.project_id =1
group by pt.test_id;');

PREPARE stmt FROM @sql;
EXECUTE stmt;

DEALLOCATE PREPARE stmt;

Saya menjalankannya di rextester. Ini linknya :dynamic_pivot_test




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pertanyaan MySQL

  2. Menyimpan konten file teks ke DB:Nilai string salah:'\xEF\xBB\xBF# W...' untuk kolom 'isi' di baris 1

  3. Ratakan gaya Pivot Tabel untuk Datagridview

  4. Konsumen produsen MySQL dengan beberapa utas pilihan

  5. Bagaimana saya bisa mengurutkan id dan sub_id dalam urutan menurun?