簡體   English   中英

SQL在帶where子句的select語句上左連接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM