在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))
感谢