根据条件使用多个查询

时间:2017-05-21 16:45:33

标签: sql oracle oracle11g

在oracle中是否有任何方法可以编写以下逻辑,并且在sql或pl / sql中执行它的效率如何?: 如果日期等于从table1中选择的东西,如果日期超过了从table1和table2中选择的东西吗?我在这里冲浪,但没有找到好的榜样。

有两个表,table1 - 每月数据,table2 - 每日数据。

例如:

如果日期> =来自table1的最大值(天) 而不是使用以下查询

select sum(vol) from table1 where day between trunc(day,'year') and             
last_day(trunc(day,month)) and code='test1'

如果一天<来自table1的最大(日)

select sum(vol) from
(
select day, vol from table1 where code='test1'
union all
select day, max(case when code = 'test1' then vol else  null end )) vol           
 from test2
  where day between add_months(last_day(trunc(sysdate, 'month')),-1)  and last_day(trunc(sysdate,month)) 
       and (to_char(day+1,'DD') ='01') and code='test1'
)
  where day between trunc(day,'year') and last_day(trunc(day,month))

感谢

0 个答案:

没有答案