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

ORACLE SQL:दिनांक सीमा के आधार पर नई पंक्ति बनाएँ

आप एक पुनरावर्ती क्वेरी का उपयोग कर सकते हैं (जो आपकी सीमाओं की अवधि की परवाह किए बिना काम करेगी):

WITH months ( id, start_date, end_date, final_date ) AS (
  SELECT id,
         start_date,
         LEAST( LAST_DAY( start_date ), end_date ),
         end_date
  FROM   table_name
UNION ALL
  SELECT id,
         end_date + INTERVAL '1' DAY,
         LEAST( ADD_MONTHS( end_date, 1 ), final_date ),
         final_date
  FROM   months
  WHERE  end_date < final_date
)
SEARCH DEPTH FIRST BY final_date SET dt_order
SELECT id,
       start_date,
       end_date
FROM   months;

जो, नमूना डेटा के लिए:

CREATE TABLE table_name (id, start_date, end_date) AS
SELECT 44, DATE '2020-01-04', DATE '2020-01-04' FROM DUAL UNION ALL
SELECT 44, DATE '2020-01-30', DATE '2020-02-10' FROM DUAL UNION ALL
SELECT 44, DATE '2020-02-27', DATE '2020-03-03' FROM DUAL;

आउटपुट:

db<>fiddle यहां



  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 SQL डेवलपर:परीक्षण विफल:नेटवर्क एडेप्टर कनेक्शन स्थापित नहीं कर सका?

  2. ओरेकल में सीएचआर () फ़ंक्शन

  3. क्या Oracle के लिए SQL*PLUS का कोई अच्छा विकल्प है?

  4. कैस्केड अपडेट ओरेकल

  5. गणना करने के लिए SQL क्वेरी () एकाधिक टेबल