, bunu yapmak için subquerying ile özyinelemeli kullanabilirsiniz:
with a1 (app_ver, num_subversions, lvl) as (
select app_ver, num_subversions, 1
from app
union all
select app.app_ver, app.num_subversions, a1.lvl + 1
from app, a1
where app.app_ver = a1.app_ver
and a1.lvl < app.num_subversions)
search depth first by app_ver, num_subversions set my_order
select app_ver || lvl
from a1;
Numune yürütülmesine:
SQL> create table app as
2 with app (app_ver, num_subversions) as (
3 select 'A', 2 from dual union all
4 select 'B', 3 from dual union all
5 select 'C', 4 from dual
6 )
7 select app_ver, num_subversions
8 from app a;
Table created
SQL> with a1 (app_ver, num_subversions, lvl) as (
2 select app_ver, num_subversions, 1
3 from app
4 union all
5 select app.app_ver, app.num_subversions, a1.lvl + 1
6 from app, a1
7 where app.app_ver = a1.app_ver
8 and a1.lvl < app.num_subversions)
9 search depth first by app_ver, num_subversions set my_order
10 select app_ver || lvl
11 from a1;
APP_VER||LVL
-----------------------------------------
A1
A2
B1
B2
B3
C1
C2
C3
C4
9 rows selected
ben soruyu anlamadım. Ne tür sonuçlar almaya çalıştığınıza emin değilim - örnek verisi gönderiyor ve beklenen çıktılar güzel olurdu. Tahminimce, her satırın "num_subversions" zamanını tekrarlamasına neden oluyorsunuz? –