Du kan ikke bruge rownum
sådan her. rownum
beregnes, når værdierne faktisk returneres fra forespørgslen -- kun når en række returneres. Derfor udsagnet:
where rownum = 2
vil aldrig returnere en værdi, fordi der skal være et "1" før et "2".
Hvis du bruger Oracle 12+, kan du bruge offset
klausul med fetch first <n> rows only
. I tidligere versioner kan du bruge row_number() over ()
at beregne et rækkenummer som en kolonne og bruge det i where
.
Faktisk bruger din forespørgsel allerede en underforespørgsel, så du kan gøre noget som:
select *
from (select . . .,
row_number() over (order by Request_ID, Actual_Start_Date) as rn
. . .
) t
WHERE rn < (1000000 * to_Number(:X) and)
rn >= (1000000 * (to_Number(:X)-1))