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

Có thể sử dụng Crosstab / Pivot Query trong MySQL không?

Bạn có thể sử dụng truy vấn này -

SELECT
  supplier_id,
  MAX(IF(date = '2012-01-01', value, NULL)) AS '2012-01-01',
  MAX(IF(date = '2012-01-03', value, NULL)) AS '2012-01-03',
  MAX(IF(date = '2012-05-01', value, NULL)) AS '2012-05-01'
FROM (
  SELECT supplier_id, DATE(date) date, CONCAT(SUM(price), '(', qty, ')') value FROM supplier
    GROUP BY supplier_id, DATE(date)
    ) t
  GROUP BY supplier_id;

+-------------+------------+------------+------------+
| supplier_id | 2012-01-01 | 2012-01-03 | 2012-05-01 |
+-------------+------------+------------+------------+
|           1 | 500.00(2)  | 450.00(10) | NULL       |
|           2 | 400.00(5)  | NULL       | NULL       |
|           3 | NULL       | NULL       | 500.00(1)  |
+-------------+------------+------------+------------+

Nó tạo ra kết quả bạn muốn. Nhưng nếu bạn muốn làm điều đó một cách động, thì hãy xem bài viết này 'Tự động hóa truy vấn bảng tổng hợp' - http://www.artfulsoftware.com/infotree/queries.php#523 hoặc liên kết này - Bảng tổng hợp độ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. Group_Concat trong Concat không hoạt động với giá trị NULL

  2. Khi nào sử dụng MyISAM và InnoDB?

  3. Thật kỳ lạ khi kết nối SQLAlchemy MySQL của tôi luôn kết thúc ở trạng thái ngủ?

  4. Làm thế nào để json_encode mảng có dấu tiếng Pháp?

  5. Công cụ điều chỉnh hiệu suất MySQL tốt nhất?