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

Cần trợ giúp về cách bỏ chia sẻ trong mysql với nhiều cột ngày

Tôi đã kiểm tra những điều sau trên MySQL 8.0.1:

SELECT GROUP_CONCAT(
  CONCAT(
    'SELECT `Product Type`, ', 
       QUOTE(COLUMN_NAME), ' AS `Date`, ',
       '`', COLUMN_NAME, '` AS `Revenue` ',
    'FROM testing_unpivot'
  ) SEPARATOR ' UNION ALL '
)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'testing_unpivot'
AND COLUMN_NAME <> 'Product Type';

Sử dụng hàm QUOTE () làm cho nó đơn giản hơn, vì nó loại bỏ sự cần thiết phải tìm ra dấu ngoặc kép ba so với bốn.

Đầu ra:

SELECT `Product Type`, '01-31-2016' AS `Date`, `01-31-2016` AS `Revenue` FROM testing_unpivot 
UNION ALL 
SELECT `Product Type`, '02-29-2016' AS `Date`, `02-29-2016` AS `Revenue` FROM testing_unpivot 
UNION ALL 
SELECT `Product Type`, '12-31-2015' AS `Date`, `12-31-2015` AS `Revenue` FROM testing_unpivot

Sau đó, tôi đã sao chép &dán để chạy truy vấn đó và nhận được kết quả này:

+--------------+------------+---------+
| Product Type | Date       | Revenue |
+--------------+------------+---------+
| A            | 01-31-2016 |  400.00 |
| B            | 01-31-2016 |   86.88 |
| C            | 01-31-2016 |  400.00 |
| D            | 01-31-2016 |   55.00 |
| E            | 01-31-2016 |  455.00 |
| A            | 02-29-2016 |   55.00 |
| B            | 02-29-2016 |   55.00 |
| C            | 02-29-2016 |   55.00 |
| D            | 02-29-2016 |   11.00 |
| E            | 02-29-2016 |   22.00 |
| A            | 12-31-2015 |  100.00 |
| B            | 12-31-2015 |    0.00 |
| C            | 12-31-2015 |  200.00 |
| D            | 12-31-2015 |  300.00 |
| E            | 12-31-2015 |  400.00 |
+--------------+------------+---------+

Tôi vừa tải dữ liệu thử nghiệm của mình với giá trị dữ liệu ba ngày đầu tiên của bạn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy xuất dữ liệu với cấu trúc phân cấp trong MySQL

  2. MySQL:Cắt ngắn Bảng so với Xóa khỏi Bảng

  3. Sự cố mã hóa Php / ODBC

  4. Cách hủy kết nối MySQL

  5. Cách viết truy vấn MySQL trong đó A chứa (a hoặc b)