ROWNUM
no se asigna hasta que consulta, por lo que no podrá usarlo en un WHERE
cláusula como esa.
Puede hacer lo siguiente:
SELECT COUNT(*)
FROM
(
select v1, v2, rownum rn
from Foo
) f
WHERE mod(rn,2) = 0;
El ROWNUM
es la posición de la fila en el conjunto de resultados y se evalúa después de seleccionar los registros.
Estos tipos de consultas nunca funcionarán:
WHERE ROWNUM > x
WHERE ROWNUM BETWEEN x AND y
Pero esto funcionará
WHERE ROWNUM < x
Ya que desea evaluar el rownum
con el mod
función no funcionará porque el rownum
no está disponible en ese momento. Es por eso que tendría que colocarlo en una subconsulta para usar el mod
función.