Expand a range columns into a single column
You could use some kind of row generation technique, for example:

select rownum - 1 as q from dual connect by level &lt;= (select max(controlnoto - controlnofrom) + 1 from booklet)


This generates as many rows as the largest range requires, with data 0, 1, 2, ..., starting with 0, so no correction needed, when we add these values to controlnofrom. Now simply join this to your original table and limit the number of rows by controlnoto - controlnofrom, finally add the row number to controlnofrom:

with booklet as
(
  select '20150105' as id, 1 as controlnofrom, 100 as controlnoto from dual union all
  select '20150106', 101, 150 from dual union all
  select '20150107', 151, 225 from dual
)
select
  b.id as id, b.controlnofrom + r.q as controlno
from
  booklet b
  join (select rownum - 1 as q from dual connect by level &lt;= (select max(controlnoto - controlnofrom) + 1 from booklet)) r on (r.q &lt;= b.controlnoto - b.controlnofrom )
order by
  id, controlno
;