Anda tidak dapat menggunakan rownum
seperti ini. rownum
dihitung ketika nilai benar-benar dikembalikan dari kueri -- hanya ketika sebuah baris dikembalikan. Oleh karena itu, pernyataan:
where rownum = 2
tidak akan pernah mengembalikan nilai, karena harus ada "1" sebelum "2".
Jika Anda menggunakan Oracle 12+, Anda dapat menggunakan offset
klausa dengan fetch first <n> rows only
. Di versi sebelumnya, Anda dapat menggunakan row_number() over ()
untuk menghitung nomor baris sebagai kolom dan menggunakannya di where
.
Sebenarnya, kueri Anda sudah menggunakan subkueri, jadi Anda bisa melakukan sesuatu seperti:
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))