Sie können rownum
nicht verwenden so was. rownum
wird berechnet, wenn die Werte tatsächlich von der Abfrage zurückgegeben werden – nur wenn eine Zeile zurückgegeben wird. Daher die Aussage:
where rownum = 2
wird niemals einen Wert zurückgeben, da eine "1" vor einer "2" stehen muss.
Wenn Sie Oracle 12+ verwenden, können Sie den offset
verwenden -Klausel mit fetch first <n> rows only
. In früheren Versionen können Sie row_number() over ()
verwenden um eine Zeilennummer als Spalte zu berechnen und diese im where
zu verwenden .
Tatsächlich verwendet Ihre Abfrage bereits eine Unterabfrage, sodass Sie Folgendes tun können:
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))