例如,您可以通过构建代码来在 mysql 中执行此操作
DROP TABLE IF EXISTS T;
CREATE TABLE T(disbursementdate DATE, amount INT, product VARCHAR(2), cluster VARCHAR(4));
INSERT INTO T VALUES
('2017-01-01' , 1000 , 'HL' , 'West'),
('2017-01-01' , 1000 , 'OL' , 'West'),
('2018-02-01' , 1000 , 'PL' , 'East'),
('2018-02-01' , 100 , 'HL' , 'West'),
('2018-02-01' , 1000 , 'HL' , 'West');
SET @SQL =
(SELECT CONCAT('SELECT DISBURSEMENTDATE,',
GROUP_CONCAT(CONCAT('SUM(CASE WHEN PRODUCT = ', CHAR(39),S.PRODUCT, CHAR(39),' THEN AMOUNT ELSE 0 END) AS ',S.PRODUCT))
,' FROM T GROUP BY DISBURSEMENTDATE;')
FROM
(SELECT DISTINCT PRODUCT FROM T) S
)
;
PREPARE SQLSTMT FROM @SQL;
EXECUTE SQLSTMT;
DEALLOCATE PREPARE SQLSTMT;
+------------------+------+------+------+
| DISBURSEMENTDATE | HL | OL | PL |
+------------------+------+------+------+
| 2017-01-01 | 1000 | 1000 | 0 |
| 2018-02-01 | 1100 | 0 | 1000 |
+------------------+------+------+------+
2 rows in set (0.00 sec)