Oracle
 sql >> Database >  >> RDS >> Oracle

Comportamento del numero di riga di Oracle con la funzione mod

ROWNUM non viene assegnato fino a quando non esegui una query, quindi non sarai in grado di usarlo in un WHERE clausola del genere.

Puoi fare quanto segue:

SELECT COUNT(*) 
FROM
(
  select v1, v2, rownum rn
  from Foo 
) f
WHERE mod(rn,2) = 0;

Il ROWNUM è la posizione della riga nel set di risultati e viene valutata dopo la selezione dei record.

Questi tipi di query non funzioneranno mai:

WHERE ROWNUM > x
WHERE ROWNUM BETWEEN x AND y

Ma funzionerà

WHERE ROWNUM < x

Dal momento che vuoi valutare il rownum con il mod funzione non funzionerà perché rownum non è disponibile a quel punto. Questo è il motivo per cui dovresti inserirlo in una sottoquery per usare il mod funzione.