sql >> Database >  >> RDS >> Oracle

Rij voor elke datum van startdatum tot einddatum

Gebruik een recursieve subquery-factoring-clausule:

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;

Welke voor uw voorbeeldgegevens:

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

Uitgangen:

db<>fiddle hier



  1. Waarom orakel het gehele deel van een decimaalteken niet toont?

  2. Het proces van synchronisatie van SQL Server-databaseschema's automatiseren

  3. Query-optimalisatie in PostgreSQL. UITLEG Basis - Deel 3

  4. Hoe krijg ik een lijst met vergrendelde gebruikers in een Oracle-database?