ROWNUM
не е присвоено, докато не направите заявка, така че няма да можете да го използвате в WHERE
клауза като тази.
Можете да направите следното:
SELECT COUNT(*)
FROM
(
select v1, v2, rownum rn
from Foo
) f
WHERE mod(rn,2) = 0;
ROWNUM
е позицията на реда в набора от резултати и се оценява, след като записите са избрани.
Тези типове заявки никога няма да работят:
WHERE ROWNUM > x
WHERE ROWNUM BETWEEN x AND y
Но това ще свърши работа
WHERE ROWNUM < x
Тъй като искате да оцените rownum
с mod
няма да работи, защото rownum
не е наличен в този момент. Ето защо ще трябва да го поставите в подзаявка, за да използвате mod
функция.