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

Chọn các Cột động trong mysql

Rất tiếc, MySQL không có PIVOT về cơ bản là những gì bạn đang cố gắng thực hiện. Vì vậy, bạn sẽ cần sử dụng một hàm tổng hợp với CASE tuyên bố:

SELECT type,
  sum(case when criteria_id = 'env' then result end) env,
  sum(case when criteria_id = 'gas' then result end) gas,
  sum(case when criteria_id = 'age' then result end) age
FROM results
group by type

Xem SQL Fiddle with Demo

Bây giờ nếu bạn muốn thực hiện điều này động, nghĩa là bạn không biết trước các cột cần chuyển vị, thì bạn nên xem lại bài viết sau:

Bảng tổng hợp động (chuyển đổi hàng thành cột)

Mã của bạn sẽ giống như sau:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'SUM(IF(CRITERIA_ID = ''',
      CRITERIA_ID,
      ''', RESULT, NULL)) AS ',
      CRITERIA_ID
    )
  ) INTO @sql
FROM
  Results;
SET @sql = CONCAT('SELECT type, ', @sql, ' FROM Results GROUP BY type');

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. Lưu trữ hình ảnh trong cơ sở dữ liệu trực tiếp hay dưới dạng dữ liệu base64?

  2. Chọn nơi số lượng của một trường lớn hơn một

  3. Bật kết nối MySQL từ xa:LỖI 1045 (28000):Quyền truy cập bị từ chối đối với người dùng

  4. Cách viết bộ đếm lượt truy cập hiệu quả cho các trang web

  5. Cách khởi động, khởi động lại, kiểm tra trạng thái và dừng máy chủ MySQL