Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

महीने के अंत में समान अवधियों को बाधित करें

आप पुनरावर्ती क्वेरी के साथ "अवधि" संख्या की गणना निम्नानुसार कर सकते हैं।

जैसा कि आपके प्रश्न के तहत टिप्पणियों में व्यक्त किया गया है, मुझे समझ में नहीं आता कि "सप्ताह" कॉलम के साथ आपका क्या मतलब है (और मुझे संदेह है कि यह संभव है कि आपकी परिभाषा वास्तव में असंगत है - आपको स्पष्ट करने के लिए छोड़ दिया गया है)।

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 से सेट किए गए इस परिणाम को उत्पन्न करने के बाद आप दो तालिकाओं में शामिल हो सकते हैं, या आवश्यकतानुसार दृष्टिकोण को अनुकूलित कर सकते हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle RefCursor के साथ पैरामीटर समस्या

  2. बेस 36 से बेस 10 रूपांतरण केवल SQL का उपयोग करके

  3. Oracle उपयोगकर्ता पासवर्ड की समाप्ति तिथि बदलें

  4. क्या कोई SQL कथन है जो 2 लंबे स्तंभों को स्तंभों के कई जोड़े में तोड़ देगा?

  5. सुरक्षित कनेक्शन पर Oracle को SQL सर्वर से कनेक्ट करना