客户需求,获取某一个时间区间的每天的账户余额,最初的方案是,得到日期区间天数,然后循环,进行查询数据库得到每一天的余额,然而这种方案性能较差,如果时间区间为30天,或100天,就要建立30次甚至跟多的数据库连接, 严重影响性能。于是通过orcal建立虚拟表的方式,获取到详细的区间,具体实现sql是,查询结果如图所示。而后根据每日余额表进行关联。
select * from (SELECT TO_DATE('2018-01-01', 'yyyy-mm-dd') + ROWNUM - 1 DAY_DATE
FROM DUAL
CONNECT BY ROWNUM <= TO_DATE('2018-01-31', 'yyyy-mm-dd') - TO_DATE('2018-01-01', 'yyyy-mm-dd')+ 1) s