Sie können die „Punkt“-Nummer wie folgt mit einer rekursiven Abfrage berechnen.
Wie in den Kommentaren unter Ihrer Frage zum Ausdruck gebracht, verstehe ich nicht ganz, was Sie mit der Spalte "Woche" meinen (und ich vermute, dass Ihre Definition tatsächlich inkonsistent ist - es bleibt Ihnen überlassen, dies zu klären).
with
r (plan, period, max_periods, start_date) as (
select plan, 1, max_periods, start_date
from table_1
union all
select plan, period + 1, max_periods,
least(start_date + 7, add_months(trunc(start_date, 'mm'), 1))
from r
where period < max_periods
)
select plan, period, start_date
from r
;
PLAN PERIOD START_DATE
---- ---------- ----------
A 1 2020-05-01
A 2 2020-05-08
A 3 2020-05-15
A 4 2020-05-22
A 5 2020-05-29
A 6 2020-06-01
A 7 2020-06-08
A 8 2020-06-15
A 9 2020-06-22
A 10 2020-06-29
A 11 2020-07-01
A 12 2020-07-08
Dies basiert auf den maximalen Perioden von TABLE_1, und ich verwende TABLE_2 überhaupt nicht. Sie können die beiden Tabellen zusammenführen, nachdem Sie diese Ergebnismenge allein aus TABLE_1 generiert haben, oder den Ansatz nach Bedarf anpassen.