ROWNUM
není přiřazeno, dokud nezadáte dotaz, takže jej nebudete moci použít v WHERE
taková klauzule.
Můžete provést následující:
SELECT COUNT(*)
FROM
(
select v1, v2, rownum rn
from Foo
) f
WHERE mod(rn,2) = 0;
ROWNUM
je pozice řádku v sadě výsledků a je vyhodnocena po výběru záznamů.
Tyto typy dotazů nebudou nikdy fungovat:
WHERE ROWNUM > x
WHERE ROWNUM BETWEEN x AND y
Ale to bude fungovat
WHERE ROWNUM < x
Protože chcete vyhodnotit rownum
pomocí mod
funkce to nebude fungovat, protože rownum
v daném okamžiku není k dispozici. To je důvod, proč byste jej museli umístit do dílčího dotazu, abyste mohli použít mod
funkce.