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

Hàm cửa sổ last_value không hoạt động bình thường

Trong các hàm phân tích, bạn cần chỉ định phạm vi cửa sổ. Theo mặc định, nó là between unbounded preceding and current row , mà tôi cho là tự giải thích.

Về cơ bản, đây là những gì sẽ xảy ra khi bạn chỉ định phân vùng partition by customer_id order by valid_from asc :

  1. Oracle lấy tất cả các hàng khớp với customer id của hàng hiện tại
  2. Nó sắp xếp chúng theo thứ tự tăng dần theo valid_from
  3. Nó tạo thành một cửa sổ bắt đầu bằng valid_from tối thiểu ngày và kết thúc bằng valid_from của hàng hiện tại .
  4. Nó đánh giá last_value , trả về valid_from của hàng hiện tại của bạn .

Những gì bạn cần làm là chỉ định một phạm vi liên tục:

16:53:00 [email protected]> ed
Wrote file S:\spool\sandbox\BUFFER_SYSTEM_38.sql

  1  select last_value(VALID_FROM) OVER (
  2    partition by customer_id
  3    ORDER BY VALID_FROM asc
  4    range between current row and unbounded following
  5  ) rn
  6* from   t
16:53:21 [email protected]> /

RN
---------------------------------------------------------------------------
04-DEC-13 11.07.01.000000 AM
04-DEC-13 11.07.01.000000 AM
04-DEC-13 11.07.01.000000 AM

Elapsed: 00:00:00.01


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn thủ tục được lưu trữ Oracle như không hoạt động với con trỏ

  2. Bảng đột biến trong Oracle 11 do một hàm gây ra

  3. Đếm (*) không hoạt động bình thường

  4. Phân tích cú pháp bảng HTML với Oracle

  5. Tính năng mới của Oracle 18c:Sửa đổi phân vùng trực tuyến