Не можете да използвате rownum
като този. rownum
се изчислява, когато стойностите действително се връщат от заявката -- само когато се връща ред. Следователно твърдението:
where rownum = 2
никога няма да върне стойност, защото трябва да има "1" преди "2".
Ако използвате Oracle 12+, можете да използвате offset
клауза с fetch first <n> rows only
. В по-стари версии можете да използвате row_number() over ()
за да изчислите номер на ред като колона и да го използвате в where
.
Всъщност вашата заявка вече използва подзаявка, така че можете да направите нещо като:
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))