[英]SQL left join on select statements with where clause
我試圖像這樣的選擇語句左聯接:
select *
from (select * from foo where rownum <= 10 ) tab1
left join (select sum(total) total,sum(worker) worker from bars where work_date between tab1.start_date and tab1.end_date ) tab2
on tab1.foo_id=tab2.id
我收到以下錯誤:
oci_execute():ORA-00904:“ tab1”。“ end_date”:無效的標識符
任何幫助,將不勝感激,謝謝!
一種執行所需操作的方法是使用兩個相關的子查詢:
select foo.*
(select sum(b.total) as total, sum(worker) as worker
from bars
where b.work_date between foo.start_date and foo.end_date and
foo.foo_id = b.id
) as total,
(select sum(b.worker) as worker
from bars b
where b.work_date between foo.start_date and foo.end_date and
foo.foo_id = b.id
) as worker
from foo
where rownum <= 10;
這也應該起作用:
select
tab1.foo_id
,tab1.start_date
,tab1.end_date
,sum(tab2.total) as total
,sum(tab2.worker) as worker
from foo tab1
left join bars tab2
on tab2.work_date between tab1.start_date and tab1.end_date
and tab1.foo_id = tab2.id
where tab1.rownum <= 10
group by
tab1.foo_id
,tab1.start_date
,tab1.end_date
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.