看一下这样是否解决了你的问题?
with a_date as (
select date '2017-09-01' as p_date, 57557.50 as p_num from dual union all
select '2017-10-01' as p_date, 57257.08 as p_num from dual union all
select '2017-11-01' as p_date, 57100.79 as p_num from dual union all
select '2017-12-01' as p_date, 57763.20 as p_num from dual union all
select '2018-01-01' as p_date, 57180.89 as p_num from dual union all
select '2018-02-01' as p_date, 57076.54 as p_num from dual union all
select '2018-03-01' as p_date, 57211.45 as p_num from dual union all
select '2018-04-01' as p_date, 57124.92 as p_num from dual union all
select '2018-05-01' as p_date, 58431.51 as p_num from dual union all
select '2018-06-01' as p_date, 56914.29 as p_num from dual union all
select '2018-07-01' as p_date, 56866.79 as p_num from dual union all
select '2018-08-01' as p_date, 56081.86 as p_num from dual union all
select '2018-09-01' as p_date, 53450.41 as p_num from dual union all
select '2018-10-01' as p_date, 52854.91 as p_num from dual union all
select '2018-11-01' as p_date, 52784.23 as p_num from dual union all
select '2018-12-01' as p_date, 53019.75 as p_num from dual union all
select '2019-01-01' as p_date, 55041.18 as p_num from dual union all
select '2019-02-01' as p_date, 54135.55 as p_num from dual union all
select '2019-03-01' as p_date, 53856.55 as p_num from dual union all
select '2019-04-01' as p_date, 54259.70 as p_num from dual union all
select '2019-05-01' as p_date, 54156.53 as p_num from dual union all
select '2019-06-01' as p_date, 55552.37 as p_num from dual)
select * from a_date p1 left join a_date p2 on p1.p_date = DATE_ADD(p2.p_date, INTERVAL -1 MONTH)
left join a_date p3 on p1.p_date = DATE_ADD(p3.p_date, INTERVAL -1 YEAR)