with t as
(
select to_date('20100101','yyyymmdd') dt, 3.5 yrt from dual union all
select to_date('20100401','yyyymmdd') dt, 4 yrt from dual union all
select to_date('20100701','yyyymmdd') dt, 4.4 yrt from dual union all
select to_date('20101001','yyyymmdd') dt, 4.5 yrt from dual
)
select
a.ymd,
b.yrt "연이율(%)",
mod(b.drt,1) * 100 "일복리(%)",
exp(sum(ln(b.drt)) over (order by a.ymd)) * 500 "원리금"
from (
select
to_date('20100101','yyyymmdd') + level - 1 ymd
from dual
connect by level <= 365
) a,
(
select
dt sdt,
lead(dt,1,add_months(to_date('20100101','yyyymmdd'),12)) over (order by dt) - 1 edt,
yrt,
exp(ln(1+(yrt/100))/365) drt
from t
) b
where a.ymd >= b.sdt and a.ymd <= b.edt