【发布时间】:2016-10-24 19:52:08
【问题描述】:
我目前正在尝试计算如何计算已发送到某个部门的工作,然后再分配给另一个部门。
例如,如果我有一份工作从 A 部门开始,然后被发送到 B 部门,那么计数应该是 0,但如果它再次从 B 部门回到 A 部门,那么我需要它来计数1.
如果它从 A 部门转到 B 部门,情况也是一样的,因为在这种情况下,我们将有 2 个部门来回进行计件工作。
逻辑不是基于工作最初从哪里开始的,它更多地是关于计算工作回到之前在链中的部门的值,只要它已经到了不同的部门之间的部门。例如,基于时间值,我可能会遇到这样一种情况,即该工作已在 A 部门进行了几次,因此计数将保持为 0。仅当它去了其他地方然后返回到原部门。
如果有人可以建议我如何编写此查询,因为目前我可以为每个部门写一个计数,但如果工作之前已经在该部门工作,那么它就是位。
以下是我的创建和插入语句。也只是为了澄清这是在 Oracle 版本 11 中编写的。
创建表
CREATE TABLE "TEST_COUNT"
( "P_DATE" DATE,
"MAIN_DEPT" VARCHAR2(6 BYTE)
)
插入
Insert into TEST_COUNT (P_DATE,MAIN_DEPT) values (to_date('17-FEB-16 12:03:36','DD-MON-RR HH24:MI:SS'),'Dept A');
Insert into TEST_COUNT (P_DATE,MAIN_DEPT) values (to_date('17-FEB-16 12:16:00','DD-MON-RR HH24:MI:SS'),'Dept B');
Insert into TEST_COUNT (P_DATE,MAIN_DEPT) values (to_date('17-FEB-16 12:16:00','DD-MON-RR HH24:MI:SS'),'Dept A');
Insert into TEST_COUNT (P_DATE,MAIN_DEPT) values (to_date('17-FEB-16 12:16:03','DD-MON-RR HH24:MI:SS'),'Dept B');
Insert into TEST_COUNT (P_DATE,MAIN_DEPT) values (to_date('17-FEB-16 12:20:00','DD-MON-RR HH24:MI:SS'),'Dept B');
Insert into TEST_COUNT (P_DATE,MAIN_DEPT) values (to_date('17-FEB-16 12:21:00','DD-MON-RR HH24:MI:SS'),'Dept B');
Insert into TEST_COUNT (P_DATE,MAIN_DEPT) values (to_date('17-FEB-16 12:33:49','DD-MON-RR HH24:MI:SS'),'Dept A');
Insert into TEST_COUNT (P_DATE,MAIN_DEPT) values (to_date('17-FEB-16 12:49:00','DD-MON-RR HH24:MI:SS'),'Dept A');
Insert into TEST_COUNT (P_DATE,MAIN_DEPT) values (to_date('04-APR-16 21:44:00','DD-MON-RR HH24:MI:SS'),'Dept A');
Insert into TEST_COUNT (P_DATE,MAIN_DEPT) values (to_date('04-APR-16 21:44:00','DD-MON-RR HH24:MI:SS'),'Dept B');
Insert into TEST_COUNT (P_DATE,MAIN_DEPT) values (to_date('04-APR-16 21:44:54','DD-MON-RR HH24:MI:SS'),'Dept B');
Insert into TEST_COUNT (P_DATE,MAIN_DEPT) values (to_date('04-APR-16 21:50:00','DD-MON-RR HH24:MI:SS'),'Dept B');
Insert into TEST_COUNT (P_DATE,MAIN_DEPT) values (to_date('04-APR-16 21:50:00','DD-MON-RR HH24:MI:SS'),'Dept B');
【问题讨论】:
-
您需要一个作业的唯一标识符。否则,您将永远不知道哪些记录是从部门传递到部门的同一份工作。您需要添加一个额外的列(例如,JOB_ID),其中每个工作都有一个标识号,然后当一个工作从一个部门传递到另一个部门时,它会保持相同的 ID。
-
感谢 Ambulare 的回复。目前我所拥有的只是主要工作 ID,但这不是唯一的,这只是一个客户编号,对上述所有内容都重复,因此不相关。