Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle SQL:Lọc theo ROWNUM không trả về kết quả khi cần

Bạn không thể sử dụng rownum như thế này. rownum được tính khi các giá trị thực sự được trả về từ truy vấn - chỉ khi một hàng được trả về. Do đó, tuyên bố:

where rownum = 2

sẽ không bao giờ trả về giá trị, vì cần phải có "1" trước "2".

Nếu bạn đang sử dụng Oracle 12+, bạn có thể sử dụng offset mệnh đề với fetch first <n> rows only . Trong các phiên bản cũ hơn, bạn có thể sử dụng row_number() over () để tính toán một số hàng dưới dạng một cột và sử dụng số đó trong where .

Trên thực tế, truy vấn của bạn đã sử dụng một truy vấn con, vì vậy bạn có thể làm điều gì đó như:

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. Oracle SQL:Hiểu hoạt động của SYS_GUID () khi hiển thị trong dạng xem nội tuyến?

  2. Sử dụng Oracle JDeveloper 12c với Cơ sở dữ liệu Oracle, Phần 1

  3. Thực thi ngay lập tức trong Thủ tục Oracle

  4. Làm cách nào để tính tổng các hàng bị ảnh hưởng nếu có Nhiều truy vấn DML trong khối PLSQL của tôi?

  5. Thủ tục PL / SQL đã hoàn thành thành công nhưng không hiển thị gì