【发布时间】:2021-12-03 06:25:03
【问题描述】:
我正在尝试创建一个查询,其中第一列显示公司列表,其他 3 列显示他们每月的收入。我就是这样做的:
WITH time_frame AS
(SELECT date_trunc('month',NOW())-interval '0 week'),
time_frame1 AS
(SELECT date_trunc('month',NOW())-interval '1 month'),
time_frame2 AS
(SELECT date_trunc('month',NOW())-interval '2 month')
select table1.company_name,
(CASE
WHEN table2.date_of_transaction = (SELECT * FROM time_frame2) THEN sum(table2.amount)
ELSE NULL
END) AS "current week - 2",
(CASE
WHEN table2.date_of_transaction = (SELECT * FROM time_frame1) THEN sum(table2.amount)
ELSE NULL
END) AS "current week - 1",
(CASE
WHEN table2.date_of_transaction = (SELECT * FROM time_frame2) THEN
sum(table2.amount)
ELSE NULL
END) AS "current week - 2"
from table1
join table2 on table2.table1_id = table.id
where table1.company_joined >= '04-20-2019'
group by 1
当我执行表时,会出现:运行查询时出错:列“table2.date_of_transaction”必须出现在 GROUP BY 子句中或用于聚合函数第 15 行:WHEN table2.date_of_transaction = (SELECT * FROM time_frame)嗯……^
您对如何解决它有任何想法吗?谢谢。
| company name | month1 | month2 |
|---|---|---|
| name 1 | £233 | £343 |
| name 2 | £243 | £34 |
| name 3 | £133 | £43 |
【问题讨论】:
-
尝试删除
group by 1
标签: postgresql time case aggregate-functions