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

Fungsi jendela last_value tidak berfungsi dengan baik

Dalam fungsi analitik Anda perlu menentukan rentang jendela. Secara default adalah between unbounded preceding and current row , yang saya anggap cukup jelas.

Pada dasarnya, inilah yang terjadi ketika Anda menentukan partition by customer_id order by valid_from asc :

  1. Oracle mengambil semua baris yang cocok dengan customer id baris saat ini
  2. Ini mengurutkannya dalam urutan menaik dengan valid_from
  3. Ini membentuk jendela yang dimulai dengan valid_from minimum tanggal, dan diakhiri dengan valid_from baris saat ini .
  4. Ini mengevaluasi last_value , yang mengembalikan valid_from baris Anda saat ini .

Yang perlu Anda lakukan adalah menentukan rentang yang sedang berlangsung:

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. Masalah mengubah tanggal dengan pemicu di oracle

  2. Bagaimana cara memeriksa apakah indeks sedang digunakan atau tidak di Oracle

  3. Oracle:PANJANG atau CLOB?

  4. Hapus angka yang ditemukan di kolom string

  5. Oracle - ekstrak stempel waktu dari string varchar?