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

Bảng tổng hợp động MySQL

Vì các giá trị nằm trong int bạn đang đặt chúng làm tên cột, bạn phải bọc các giá trị trong một thanh quay lại

Sql sẽ giống như sau:

max(case when user_id = 1 then score end) as `1`

Truy vấn đầy đủ sẽ là:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when user_id = ''',
      user_id,
      ''' then score end) AS `',
      user_id, '`'
    )
  ) INTO @sql
FROM  measure2;

SET @sql = CONCAT('SELECT inspection_date, ', @sql, ' 
                  FROM measure2 
                  GROUP BY inspection_date');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

Xem SQL Fiddle with 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. So sánh phạm vi ngày

  2. Chỉ nhóm theo ngày trên cột Ngày giờ

  3. Sử dụng dấu nền xung quanh tên trường

  4. JSON_MERGE_PATCH () so với JSON_MERGE_PRESERVE () trong MySQL:Sự khác biệt là gì?

  5. Vấn đề về ĐẶT HÀNG MYSQL THEO TRƯỜNG HỢP