使用If的PL / SQL功能

问题描述

我有一个生产记录系统,用户可以在其中选择日期,时间,区域,生产线,班次和型号。在pieces字段中介绍一小时内的织物片数。在添加另一条记录后,用户再次输入了条数,但该条数还必须出现在另一个字段Total pieces中,即总条数,即当前条数加上上一条记录的总和。>

这是桌子

日期------时间---------区域-------线----班次-----模型----件---- -总体积

8/8/20 ------- 7 -------------- A ----------- 1 ------- --1 -------- XC1 -------- 2 -------------------- 2
8/8/20 ------- 8 -------------- A ----------- 1 --------- 1 -------- XC1 -------- 3 -------------------- 5

8/8/20 ------- 9 -------------- A ----------- 1 ------- --1 -------- XC1 -------- 2 -------------------- 7

该功能不应在一天开始时添加任何内容,只要日期,行,区域,班次和型号相同,就应添加以下记录。

我计划使用PL / SQL函数,如果时间是7(开始),它显示与在pieces中输入的数字相同,但是如果是另一个时间(例如8),在记录的数据库中选择具有相同日期,面积,线条,班次和模型的零件数据,但时间是前一个(小时1)。

我不知道这是否可以解决,谢谢您的帮助。

解决方法

我不会将total_volume存储到表中;使用sum函数以其解析形式对其进行计算。毕竟,这就是Oracle Apex(我认为是交互式的或经典的报告)。

这里是一个示例(第1-14行的示例数据;实际完成工作的查询从第15行开始):

SQL> with test (datum,time,model,pieces) as                       -- Expected result:
  2    (select date '2020-08-08',7,'XC1',2 from dual union all   -- 2
  3     select date '2020-08-08',8,3 from dual union all   -- 5
  4     select date '2020-08-08',9,2 from dual union all   -- 7
  5     --
  6     select date '2020-08-09',1 from dual union all   -- 1
  7     select date '2020-08-09',3 from dual union all   -- 4
  8     select date '2020-08-09',10,2 from dual union all   -- 6
  9     select date '2020-08-09',11,1 from dual union all   -- 7
 10     select date '2020-08-09',12,6 from dual union all   -- 13
 11     --
 12     select date '2020-08-09','XC2',5 from dual union all   -- 5
 13     select date '2020-08-09',4 from dual             -- 9
 14    )
 15  select datum,pieces,16    sum(pieces) over (partition by datum,model order by time) total_volume
 17  from test
 18  order by datum,time;

DATUM            TIME MOD     PIECES TOTAL_VOLUME
---------- ---------- --- ---------- ------------
08/08/2020          7 XC1          2            2
08/08/2020          8 XC1          3            5
08/08/2020          9 XC1          2            7
09/08/2020          7 XC1          1            1
09/08/2020          8 XC1          3            4
09/08/2020         10 XC1          2            6
09/08/2020         11 XC1          1            7
09/08/2020         12 XC1          6           13
09/08/2020          9 XC2          5            5
09/08/2020         10 XC2          4            9

10 rows selected.

SQL>

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...