For 12c and above you may use lateral join:
with a(OVERALL_COUNT, NAME, OTHER_ATTRIBUTE) as (
select 1, 'ABC', 'q' from dual union all
select 5, 'ACB', 'w' from dual union all
select 2, 'CBA', 'e' from dual
)
select a.*
from a
cross join lateral (
select 1
from dual
connect by level <= a.overall_count
)
order by name
OVERALL_COUNT | NAME | OTHER_ATTRIBUTE
------------: | :--- | :--------------
1 | ABC | q
5 | ACB | w
5 | ACB | w
5 | ACB | w
5 | ACB | w
5 | ACB | w
2 | CBA | e
2 | CBA | e
Or for 11 version:
with b(
overall_count
, name
, other_attribute
, l
) as (
select a.*, 1
from a
union all
select
overall_count
, name
, other_attribute
, l + 1
from b
where l < overall_count
)
select *
from b
order by name
OVERALL_COUNT | NAME | OTHER_ATTRIBUTE | L
------------: | :--- | :-------------- | -:
1 | ABC | q | 1
5 | ACB | w | 1
5 | ACB | w | 2
5 | ACB | w | 4
5 | ACB | w | 5
5 | ACB | w | 3
2 | CBA | e | 2
2 | CBA | e | 1
db<>fiddle here