ROWNUM
wird erst zugewiesen, wenn Sie es abfragen, sodass Sie es nicht in einem WHERE
verwenden können Klausel so.
Sie können Folgendes tun:
SELECT COUNT(*)
FROM
(
select v1, v2, rownum rn
from Foo
) f
WHERE mod(rn,2) = 0;
Die ROWNUM
ist die Position der Zeile in der Ergebnismenge und wird ausgewertet, nachdem die Datensätze ausgewählt wurden.
Diese Arten von Abfragen werden niemals funktionieren:
WHERE ROWNUM > x
WHERE ROWNUM BETWEEN x AND y
Aber das wird funktionieren
WHERE ROWNUM < x
Da Sie die rownum
auswerten möchten mit dem mod
Funktion wird es nicht funktionieren, weil die rownum
ist zu diesem Zeitpunkt nicht verfügbar. Aus diesem Grund müssten Sie es in einer Unterabfrage platzieren, um den mod
zu verwenden Funktion.