Oracle’da analitik fonksiyonları kullanarak bakiye hesaplanabilmektedir. Örneğimizde bakiye test tablosu oluşturup test verilerini giriyoruz. Hesaplama sutunu için SUM grup fonksiyonunu OVER ile kullanarak satır satır çalışmasını sağlıyoruz. ORDER BY ile toplama işlemini hangi sırayla yapılmasını gerektiğini belirtiyoruz.
create table bakiye_test (
id number primary key,
tarih date not null,
giren number not null,
cikan number not null
);
insert into bakiye_test values (1,'05.04.2010',100,0);
insert into bakiye_test values (2,'07.04.2010',0,200);
insert into bakiye_test values (3,'09.04.2010',300,0);
insert into bakiye_test values (4,'10.04.2010',100,0);
insert into bakiye_test values (5,'12.04.2010',0,50);
insert into bakiye_test values (6,'19.04.2010',50,0);
insert into bakiye_test values (7,'21.04.2010',0,30);
commit;
SQL> SELECT B.*, SUM( GIREN-CIKAN ) OVER (ORDER BY TARIH ASC ) BAKIYE FROM BAKIYE_TEST B;
ID TARIH GIREN CIKAN BAKIYE
---------- ----------- ---------- ---------- ----------
1 05.04.2010 100 0 100
2 07.04.2010 0 200 -100
3 09.04.2010 300 0 200
4 10.04.2010 100 0 300
5 12.04.2010 0 50 250
6 19.04.2010 50 0 300
7 21.04.2010 0 30 270
7 rows selected