sql以月区间为查询条件,当查询条件大于表内存在的最大月时如何将最大月值赋给查询条件区间内的每个月?

例如:表内容如下,
期间 201902,客户 tom,金额 10;
期间 201902,客户 bob,金额 30;
期间 201903,客户 tom,金额 10;
现在传进来的月区间是201905-201907,我想要的查询结果是每一个客户的05-07月份累计金额,但是表内没有05-07月份的数据,所以取最大月份03月的累计金额,比如上述区间05-07,我想获取的最终结果是:期间 201905,客户 tom,金额 20(2月的10+3月的10);期间 201906,客户 tom,金额 20;期间 201907,客户 tom,金额 20;201905,客户 bob,金额 30;期间 201906,客户 bob,金额 30;期间 201907,客户 bob,金额 30.

https://blog.csdn.net/zam183/article/details/90375382

with a as(
select to_date(createdate,'yyyymm') createdate,name,money,
sum(money) over(partition by name order by createdate) summoney
from table_test1),
b as(
select name,add_months(to_date(201905,'yyyymm'),level-1) createdate
from dual,(select distinct name from table_test1)
connect by level <=months_between(to_date(201907,'yyyymm'),to_date(201905,'yyyymm'))+1
and prior name=name
and prior sys_guid() is not null
)
SELECT * FROM
(
select nvl(b.name,a.name),nvl(a.createdate,b.createdate) createdate,
nvl(summoney,lag(summoney ignore nulls)over(partition by nvl(b.name,a.name) order by nvl(a.createdate,b.createdate)))
from a full join b on a.createdate=b.createdate and a.name=b.name)
WHERE createdate BETWEEN to_date(201901,'yyyymm') AND to_date(201907,'yyyymm')图片说明
图片说明