ROWNUM
tidak ditetapkan sampai Anda melakukan kueri, jadi Anda tidak akan dapat menggunakannya di WHERE
klausa seperti itu.
Anda dapat melakukan hal berikut:
SELECT COUNT(*)
FROM
(
select v1, v2, rownum rn
from Foo
) f
WHERE mod(rn,2) = 0;
ROWNUM
adalah posisi baris dalam kumpulan hasil, dan dievaluasi setelah catatan dipilih.
Jenis kueri ini tidak akan pernah berfungsi:
WHERE ROWNUM > x
WHERE ROWNUM BETWEEN x AND y
Tapi ini akan berhasil
WHERE ROWNUM < x
Karena Anda ingin mengevaluasi rownum
dengan mod
fungsi itu tidak akan berfungsi karena rownum
tidak tersedia pada saat itu. Inilah sebabnya, Anda harus menempatkannya di sub-kueri untuk menggunakan mod
fungsi.