sql >> Databasteknik >  >> RDS >> Oracle

Rad för varje datum från startdatum till slutdatum

Använd en rekursiv subquery-factoring-sats:

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;

Vilket för dina exempeldata:

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

Utgångar:

db<>fiol här



  1. BULK INSERT med identitet (auto-increment) kolumn

  2. django.db.migrations.RenameModel och AutoField-sekvensnamn

  3. Lägg till kolumn efter en annan kolumn

  4. FÖR UPPDATERING v/s LÅS I DELNINGSLÄGE:Tillåt samtidiga trådar att läsa uppdaterat tillståndsvärde för låst rad