我有一张像这样的桌子:
ORDER_DATE | ORDER_ID | ORDER_AMOUNT
2020-11-07 | 1 | 40
2020-11-07 | 1 | 60
2021-04-01 | 2 | 100
从 2020 年 7 月 1 日到 2020 年 12 月 31 日,由于新冠疫情,营业税从 19% 降低到 16%。
现在我需要知道每个 ORDER_ID 的总金额。结果应该是:
ORDER_ID | ORDER_AMOUNT
1 | 116
2 | 119
到目前为止我的代码:
SELECT CASE WHEN ORDER_DATE BETWEEN '2020-07-01' AND '2020-12-31'
THEN SUM(ORDER_AMOUNT) * 1.16
WHEN (ORDER_DATE < '2020-07-01' OR ORDER_DATE > '2020-12-31')
THEN SUM(ORDER_AMOUNT) * 1.19
ELSE 0
END AS 'gross_amount'
--
FROM my_dwh_table
--
GROUP BY
CASE WHEN ORDER_DATE BETWEEN '2020-07-01' AND '2020-12-31'
THEN SUM(ORDER_AMOUNT) * 1.16
WHEN (ORDER_DATE < '2020-07-01' OR ORDER_DATE > '2020-12-31')
THEN SUM(ORDER_AMOUNT) * 1.19
ELSE 0
END
;
但我在 DBeaver 中收到此错误:
SQL Error [42000]: set function in group by clause
如何使用 CASE WHEN 语句通过 ORDER_ID 上的 GROUP BY 计算不同的销售税?我的代码中的错误在哪里?