ROWNUM
wordt niet toegewezen totdat u een query uitvoert, dus u kunt het niet gebruiken in een WHERE
zo'n clausule.
U kunt het volgende doen:
SELECT COUNT(*)
FROM
(
select v1, v2, rownum rn
from Foo
) f
WHERE mod(rn,2) = 0;
De ROWNUM
is de positie van de rij in de resultatenset en wordt geëvalueerd nadat de records zijn geselecteerd.
Dit soort zoekopdrachten zullen nooit werken:
WHERE ROWNUM > x
WHERE ROWNUM BETWEEN x AND y
Maar dit zal werken
WHERE ROWNUM < x
Aangezien u de rownum
. wilt evalueren met de mod
functie zal het niet werken omdat het rownum
is op dat moment niet beschikbaar. Daarom zou je het in een subquery moeten plaatsen om de mod
. te gebruiken functie.