Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Các cột trong bảng Pivot động mysql

SQL động của bạn vẫn ổn ngoại trừ một điều. Nó có một cột không rõ ràng project_id trên kết nối thứ hai bên trái của bạn, chỉ cần thay thế nó bằng pt.project_id hoặc trd.project_id và nó sẽ cho kết quả mong muốn.

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;

Tôi đã chạy nó trên một máy sắp xếp lại. Đây là liên kết: 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. mysql trả về tập hợp trống

  2. Ý nghĩa về hiệu suất của việc cho phép sử dụng bí danh trong mệnh đề HAVING

  3. Chèn biểu mẫu HTML không hoạt động trong PHP và MySQL

  4. Làm cách nào để thay thế mọi trường hợp khác của một ký tự cụ thể trong chuỗi MySQL?

  5. Vấn đề về bộ mã chuyển đổi MySQL