SQL:聚合来自相同 table 的不同月份

SQL: Aggregate different months from same table

假设我有一个 table 产品的销售日期。 las,我不能在这里格式化 table,因此代码为:

table1:

Product|Date|Sales
-------|----|-----
ProdA  |1.1.|100
ProdB  |1.1.| 50
ProdC  |1.1.| 75
ProdA  |2.1.|110
ProdB  |2.1.| 60
ProdC  |2.1.| 60
....   |... |...

我需要一个新的 table 以及每个月的销售额:

Product| Jan| Feb|...
-------|----|----|...
ProdA  |1234|1400|...
ProdB  | 234| 400|...
ProdC  | 524| 640|...
...    |... |... |...

我尝试对 CASE 使用 SQL-查询。 []中的文字是缩写,真正的表达是to_char(to_month(..)) construct有效。

SELECT 
    Product,
    CASE WHEN [date == 1] THEN SUM(Sales) END AS Jan,
    CASE WHEN [date == 2] THEN SUM(Sales) END AS Feb,
    CASE WHEN [date == 3] THEN SUM(Sales) END AS Mar,
    ...
FROM
    table1
GROUP BY
    Product

我收到 00979. 00000 - "not a GROUP BY expression" 错误。

我知道我可以通过为每个月构建 tables 并再次添加一些来解决问题,但这是低性能的。我也想明白,为什么构造不起作用?

PS: - [Edit1]:它是一个 Oracle DB

尝试在 case 语句 sum(case when end)

之前给出 agreegation
SELECT 
    Product,
    sum(CASE WHEN date = 1 THEN Sales END) AS Jan,
    SUM(CASE WHEN date = 2 THEN Sales END) AS Feb,
    SUM(CASE WHEN date = 3 THEN Sales END) AS Mar,
    ...
FROM
    table1
GROUP BY
    Product