|
|
[php]
SQL> create table t_three (d date,i number,o number);
Table created
SQL> insert into t_three values(date'2000-3-1',50,30);
1 row inserted
SQL> insert into t_three values(date'2000-3-2',45,60);
1 row inserted
SQL> insert into t_three values(date'2000-3-5',60,10);
1 row inserted
SQL> select * from t_three;
D I O
----------- ---------- ----------
2000-3-1 50 30
2000-3-2 45 60
2000-3-5 60 10
SQL> select d,i,o,sum(i-o) over ( order by d) from t_three;
D I O SUM(I-O)OVER(ORDERBYD)
----------- ---------- ---------- ----------------------
2000-3-1 50 30 20
2000-3-2 45 60 5
2000-3-5 60 10 55
SQL> insert into t_three values(date'2000-3-5',60,10);
1 row inserted
SQL> select d,i,o,sum(i-o) over ( order by d) from (
2 select d,sum(i) i,sum(o) o from t_three group by d)
3 /
D I O SUM(I-O)OVER(ORDERBYD)
----------- ---------- ---------- ----------------------
2000-3-1 50 30 20
2000-3-2 45 60 5
2000-3-5 120 20 105
SQL> select d,i,o,sum(i-o) over ( order by d) from (
2 select a.d,sum(nvl(b.i,0)) i,sum(nvl(b.o,0)) o from t_three b,(select b+rownum-1 d from (select min(d) b,max(d) e from t_three) connect by b+rownum-1<=e) a
3 where a.d=b.d(+) group by a.d)
4 /
D I O SUM(I-O)OVER(ORDERBYD)
----------- ---------- ---------- ----------------------
2000-3-1 50 30 20
2000-3-2 45 60 5
2000-3-3 0 0 5
2000-3-4 0 0 5
2000-3-5 120 20 105
SQL>
[/php] |
|