When I tried to write a SQL with similar logic, the output of liner growth was less than the max values I provided, can you please check what I have missed here
with data as
(
select to_date('20200302','yyyymmdd') dt, 6 val from dual union all
select to_date('20200303','yyyymmdd') dt, 9 val from dual union all
select to_date('20200304','yyyymmdd') dt, 32 val from dual union all
select to_date('20200305','yyyymmdd') dt, 33 val from dual union all
select to_date('20200306','yyyymmdd') dt, 34 val from dual union all
select to_date('20200307','yyyymmdd') dt, 37 val from dual union all
select to_date('20200308','yyyymmdd') dt, 43 val from dual union all
select to_date('20200309','yyyymmdd') dt, 50 val from dual union all
select to_date('20200310','yyyymmdd') dt, 65 val from dual union all
select to_date('20200311','yyyymmdd') dt, 65 val from dual union all
select to_date('20200312','yyyymmdd') dt, 77 val from dual union all
select to_date('20200313','yyyymmdd') dt, 85 val from dual union all
select to_date('20200314','yyyymmdd') dt, 100 val from dual union all
select to_date('20200305','yyyymmdd') dt, 110 val from dual union all
select to_date('20200316','yyyymmdd') dt, 114 val from dual union all
select to_date('20200317','yyyymmdd') dt, 140 val from dual union all
select to_date('20200318','yyyymmdd') dt, 170 val from dual union all
select to_date('20200319','yyyymmdd') dt, 187 val from dual
),
regresion as
(
select
regr_slope(val, to_number(to_char(dt,'j'))) slope,
regr_intercept(val, to_number(to_char(dt,'j'))) intcpt,
max(dt) nxt
from data
)
select nxt+r dt,
trunc(intcpt+slope*to_number(to_char(nxt+r,'j')))
from regresion,
( select rownum r
from dual
connect by level <= 7 )
order by 1;
DT TRUNC(INTCPT+SLOPE*TO_NUMBER(TO_CHAR(NXT+R,'J')))
--------- -------------------------------------------------
20-MAR-20 162
21-MAR-20 171
22-MAR-20 180
23-MAR-20 189
24-MAR-20 197
25-MAR-20 206
26-MAR-20 215