sql >> Database teknologi >  >> RDS >> Oracle

Række for hver dato fra startdato til slutdato

Brug en rekursiv subquery-factoring-sætning:

WITH ranges ( start_dt, end_dt, id ) AS (
  SELECT start_dt, end_dt, id
  FROM   table_name
UNION ALL
  SELECT start_dt + INTERVAL '1' DAY, end_dt, id
  FROM   ranges
  WHERE  start_dt + INTERVAL '1' DAY <= end_dt
)
SELECT start_dt,
       id
FROM   ranges;

Hvilket for dine eksempeldata:

CREATE TABLE table_name ( start_dt, end_dt, id ) AS
SELECT DATE '2013-04-05', DATE '2013-04-09', 1 FROM DUAL

Udgange:

db<>fiddle her



  1. Opdater databaseinfo med onclick-knappen

  2. hvorfor varbinær i stedet for varchar

  3. Solr Indexing My SQL Timestamp eller Date Time-feltet

  4. ON DELETE CASCADE-indstillingen er ikke genereret, når du bruger ddl-skemagenerering på Mysql