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

truy vấn trục chính mysql / crosstab

Mặc dù câu trả lời tĩnh của @ John hoạt động tuyệt vời, nhưng nếu bạn có một số lượng cột không xác định mà bạn muốn chuyển đổi, tôi sẽ cân nhắc sử dụng các câu lệnh đã chuẩn bị để nhận được kết quả:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'GROUP_CONCAT((CASE node_id when ',
      node_id,
      ' then entered_value else NULL END)) AS user_input',
      node_id
    )
  ) INTO @sql
FROM trn_user_log;


SET @sql = CONCAT('SELECT app_id, transaction_id, mobile_no, ', @sql, ' 
                  FROM trn_user_log 
                  GROUP BY app_id, transaction_id, mobile_no');

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

xem SQL Fiddle với Demo

Trong trường hợp thứ hai của bạn, vui lòng làm rõ những gì bạn đang cố gắng làm điều đó không rõ ràng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mẹo điều chỉnh hiệu suất MySQL để tối ưu hóa cơ sở dữ liệu

  2. tomcat7 - jdbc datasource - Điều này rất có thể tạo ra rò rỉ bộ nhớ

  3. Cách khắc phục lỗi MySQL 1064

  4. NOW () Ví dụ - MySQL

  5. Chèn SQL trong ADOdb và bảo mật trang web chung