Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle SQL:Memfilter oleh ROWNUM tidak mengembalikan hasil ketika seharusnya

Anda tidak dapat menggunakan rownum seperti ini. rownum dihitung ketika nilai benar-benar dikembalikan dari kueri -- hanya ketika sebuah baris dikembalikan. Oleh karena itu, pernyataan:

where rownum = 2

tidak akan pernah mengembalikan nilai, karena harus ada "1" sebelum "2".

Jika Anda menggunakan Oracle 12+, Anda dapat menggunakan offset klausa dengan fetch first <n> rows only . Di versi sebelumnya, Anda dapat menggunakan row_number() over () untuk menghitung nomor baris sebagai kolom dan menggunakannya di where .

Sebenarnya, kueri Anda sudah menggunakan subkueri, jadi Anda bisa melakukan sesuatu seperti:

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. Bagaimana cara mengubah 1985-02-07T00:00:00.000Z (ISO8601) ke nilai tanggal di Oracle?

  2. Kerangka Entitas Tidak Dapat Memperbarui Data Dalam Tabel Dengan Kunci Komposit (Oracle)

  3. Oracle 12c XML mendapatkan nilai dari respons

  4. Database Manajer Paket GI 19c RPM

  5. Bagaimana cara mendeklarasikan dan menggunakan variabel dalam PL/SQL seperti yang saya lakukan di T-SQL?