我有两个表,第一个表(表1)包含id,dat\u beg,period,dat\u end。第二个表(表2)包含多个列,包括cod\u client和cod\u contract。我想对上面提到的表执行左连接。请问有人知道我的代码有什么问题吗?
先谢谢你,
select id, DATE_TRUNC('day', table1.dat_beg) as date, s1, cod_client, sum(perid) as sum_period from (
select id, table1.dat_end, x, table1.dat_beg ,
(case when TRIM(x) like 'cat/%' then 'cat'
when TRIM(x) like 'fol/%' then 'follower'
else 'unknown'
end) as s1,
(extract(epoch from (table1.dat_end - table1.dat_beg)))/60 as sum_period
from table1 left join table2 on table1.id = table2.cod_contract
where table1.dat_end < '2262-04-11' and table1.dat_beg >= '2019-01-10'
) X
group by table1.id, table1.s1, table1.date
2条答案
按热度按时间mzmfm0qo1#
这个查询实际上有很多问题。我要发布我认为可能有用的东西,然后是我不确定的东西。
问题:
codu客户端没有包含在子查询中,所以我猜它来自
table2
?你引用了
table1
在子查询之外,它没有任何意义。我把这个改成了x
相反;你有很多额外的(不必要的(真的!)括号;
你的表中有列
x
外部查询中未使用的子查询;你在给一个叫做
perid
,但这在任何地方都不存在,我猜这是命中注定的sum_period
?编辑
小提琴演示
7gcisfzg2#
除了group by子句和sum函数-