Du kan inte använda rownum
så här. rownum
beräknas när värdena faktiskt returneras från frågan -- endast när en rad returneras. Därför uttalandet:
where rownum = 2
kommer aldrig att returnera ett värde, eftersom det måste finnas en "1" före en "2".
Om du använder Oracle 12+ kan du använda offset
sats med fetch first <n> rows only
. I tidigare versioner kan du använda row_number() over ()
för att beräkna ett radnummer som en kolumn och använda det i where
.
Faktiskt använder din fråga redan en underfråga, så du kan göra något 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))