Repeating rows of date intervals based on another table in Oracle
Returning maintenance dates for the next 365 days:

variable n number;
exec :n := 365;

with generator as
(
  select rownum - 1 as r from dual connect by level &lt;= (select max(ceil(:n / day_interval)) from maint_sched)
)
select ms.maint_id, ms.start_date + g.r * ms.day_interval as date_due
from maint_sched ms join generator g on (ms.start_date + g.r * ms.day_interval between sysdate and sysdate + :n)
order by 2, 1;

  MAINT_ID DATE_DUE
---------- ---------
         1 30-JUN-15
         3 01-JUL-15
         3 31-JUL-15
         3 30-AUG-15
         1 28-SEP-15
         3 29-SEP-15
         2 18-OCT-15
         3 29-OCT-15
         3 28-NOV-15
         1 27-DEC-15
         3 28-DEC-15
         3 27-JAN-16
         3 26-FEB-16
         1 26-MAR-16
         3 27-MAR-16
         3 26-APR-16
         2 05-MAY-16