我尝试使用当前日期值更新两列。我需要回溯过去一年中每天的初始库存。计算初始库存的计算是:
(Current open inv + Completed inv)-(New receipt) = Beginning inv
。
计算出的今天的开始库存将用作前一天的开放式inv(结束inv),并且我已经完成了每天的inv和收据计数。
Date Open_inv Comp_inv Receipt beg_inv
03/20 100 20 30 90
03/19 90 15 20 ?
03/18 ? 25 30 ?
这样的事情可能会有所帮助
SQL> create table t ( d date, o int, c int, r int, b int );
Table created.
SQL> insert into t values ( date '2000-03-20', 100 , 20 , 30 , 90);
1 row created.
SQL> insert into t values ( date '2000-03-19', null , 15 , 20 , null);
1 row created.
SQL> insert into t values ( date '2000-03-18', null , 25 , 30 , null);
1 row created.
SQL>
SQL> select
2 d,
3 case
4 when row_number() over ( order by d desc ) = 1 then o
5 else min(o) over () +tot_c-tot_r
6 end o,
7 c,
8 r
9 from (
10 select t.*,
11 nvl(sum(c) over ( order by d desc rows between unbounded preceding and 1 preceding),c) as tot_c,
12 nvl(sum(r) over ( order by d desc rows between unbounded preceding and 1 preceding ),r) as tot_r
13 from t
14 );
D O C R
--------- ---------- ---------- ----------
20-MAR-00 100 20 30
19-MAR-00 90 15 20
18-MAR-00 85 25 30
3 rows selected.
此外,如果您可以像我一样使用create table和insert脚本来表达您的问题,那么其他人可以更轻松地帮助您。