Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle SQL:Filtrowanie według ROWNUM nie zwraca wyników, gdy powinno

Nie możesz użyć rownum lubię to. rownum jest obliczana, gdy wartości są faktycznie zwracane z zapytania — tylko wtedy, gdy zwracany jest wiersz. Stąd stwierdzenie:

where rownum = 2

nigdy nie zwróci wartości, ponieważ musi być „1” przed „2”.

Jeśli używasz Oracle 12+, możesz użyć offset klauzula z fetch first <n> rows only . We wcześniejszych wersjach możesz użyć row_number() over () aby obliczyć numer wiersza jako kolumnę i użyć go w where .

W rzeczywistości Twoje zapytanie korzysta już z podzapytania, więc możesz zrobić coś takiego:

select *
from (select . . .,
             row_number() over (order by Request_ID, Actual_Start_Date) as rn
      . . .
     ) t
WHERE rn < (1000000 * to_Number(:X) and)
      rn >= (1000000 * (to_Number(:X)-1))


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przekazać listę obiektów Java do procedury składowanej Oracle za pomocą MyBatis?

  2. Oracle DataReader zwraca 1 wiersz, ale metoda Read zwraca wartość false

  3. Konfiguracja wielu baz danych dla wersji Spring Data JPA 2.0.9

  4. Jak korzystać z EXTRACT przez dbplyr podczas łączenia się z bazą danych Oracle?

  5. PL/SQL:błąd liczbowy lub wartościowy:zbyt mały bufor ciągu znaków %ROWTYPE