आप पुनरावर्ती क्वेरी के साथ "अवधि" संख्या की गणना निम्नानुसार कर सकते हैं।
जैसा कि आपके प्रश्न के तहत टिप्पणियों में व्यक्त किया गया है, मुझे समझ में नहीं आता कि "सप्ताह" कॉलम के साथ आपका क्या मतलब है (और मुझे संदेह है कि यह संभव है कि आपकी परिभाषा वास्तव में असंगत है - आपको स्पष्ट करने के लिए छोड़ दिया गया है)।
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
यह TABLE_1 की अधिकतम अवधियों पर आधारित है, और मैं TABLE_2 का बिल्कुल भी उपयोग नहीं कर रहा हूं। अकेले TABLE_1 से सेट किए गए इस परिणाम को उत्पन्न करने के बाद आप दो तालिकाओं में शामिल हो सकते हैं, या आवश्यकतानुसार दृष्टिकोण को अनुकूलित कर सकते हैं।