in 11g just use a recursive factored sub query:
with data (role_name , max_cnt, val)
as (select role_name , max_cnt, min_cnt
from task_2
union all
select role_name , max_cnt, val+1
from data
where val+1 <= max_cnt)
select role_name || ' there are ' || val
from data
order by role_name, val;
if you want a connect by
approach (not as good as the above), then:
select role_name || ' there are ' || (min_cnt + d.r - 1)
from task_2 t
cross join (select rownum r
from dual
connect by level <= (select max(max_cnt - min_cnt + 1)
from task_2)) d
where d.r <= max_cnt - min_cnt + 1
order by role_name, d.r;
model clause:
with data as (select role_name, min_cnt, max_cnt, max_cnt-min_cnt+1 vals
from task_2)
select role_name|| ' there are ' || vals
from data
model
partition by (role_name)
dimension by (0 as i)
measures (vals, min_cnt)
rules (
vals[for i from 0 to vals[0] increment 1] = min_cnt[0] + cv(i)
)