我有一个包含许多不同产品的大型数据集.在小范围内,它看起来像这样:
product | month | amount |
---|---|---|
AA | 1 | 100 |
AA | 1 | 150 |
AA | 2 | 200 |
AA | 2 | 120 |
BB | 2 | 180 |
BB | 2 | 220 |
CC | 3 | 80 |
我想以不同的顺序得到信息.在"产品"列中写入尽可能多的新列,然后填写每月的金额总和.它看起来像这样:
month | AA | BB | CC |
---|---|---|---|
1 | 250 | NA | NA |
2 | 320 | 400 | NA |
3 | NA | NA | 80 |
重要的是旋转工作表,这是我的主要问题.我看到了类似的问题,但都已经用Pivot函数解决了,但我使用的是DBeaver中的Postgres数据库,它没有Pivot函数:
SELECT *
FROM (
SELECT product, month, amount
FROM ventas
) AS SourceTable
PIVOT (
SUM(amount)
FOR month IN ([1], [2], [3])
) AS PivotTable;
SQL错误[42601]:错误:语法错误在或附近"PIVOT" 职位:95
我试过不同的方法,但没有成功.I can't write the names of all products in the query as there are too many!
以下是一个测试设置,以方便您:
CREATE TABLE ventas (
product VARCHAR(50),
month INT,
amount INT
);
INSERT INTO ventas (product, month, amount) VALUES
('AA', 1, 100),
('AA', 1, 150),
('AA', 2, 200),
('AA', 2, 120),
('BB', 2, 180),
('BB', 2, 220),
('CC', 3, 80),