我有两个表,第一个存储任务数据(任务名称,create date
assign_to 等),第二个表存储任务历史数据,例如operation_date
,任务完成,任务被拒绝等(Task 和 Task_history 表)
公司创建任务并将其分配给员工,然后员工接受任务并完成它们。
任务create_date
列指定任务的执行顺序,operation_date
和completed status
列指定任务互补的顺序。
我需要一个查询以报告员工详细信息,即员工是否按照开头指定的顺序完成任务?按照给定的顺序完成了多少任务?
我尝试查询状态已完成任务,为给定日期的员工订购 task_creation 和 operation_date 表。然后,为选择查询添加 rownum,然后连接两个表。如果 rownums 相等,则员工完成给定序列的任务,否则不完成。但是查询结果和我预想的不一样。像这样显示的Rownums, r_h--> 1,2,3 ; r_t--> 1,15,17
SELECT *
FROM (SELECT W.id, w.create_date, ROWNUM as r_t
FROM wfm_task_1 W where W.task_status = 3
ORDER BY W.create_date ASC) TASK_SEQ LEFT OUTER JOIN
( SELECT H.wfm_task, H.record_date, ROWNUM as r_h
FROM wfm_task_history H
WHERE H.task_status = 3
AND H.record_date BETWEEN (TO_DATE ('12.07.2013',
'DD.MM.YYYY')
- 1)
AND (TO_DATE ('12.07.2013',
'DD.MM.YYYY')
+ 1)
ORDER BY H.record_date ASC) HISTORY_SEQ
ON TASK_SEQ.id = HISTORY_SEQ.wfm_task
样本数据集
wfm_task (ID, CREATION_DATE, TASK_NAME)
49361 | 06.07.2013 11:50:00 | missionx
49404 | 10.07.2013 13:01:00 | missiony
49407 | 11.07.2013 11:02:00 | missiona
49108 | 01.07.2013 21:02:00 | missionb
task_history (ID,WFM_TASK,OP_DATE, STATUS)
98 | 49361 | 12.07.2013 15:19:19 | 3
92 | 49404 | 12.07.2013 11:10:50 | 3
90 | 49407 | 12.07.2013 11:06:58 | 3
78 | 49108 | 03.07.2013 11:02:00 | 1
result (WFM_TASK,RECORD_DATE,R_H,ID,CREATE_DATE,R_T)
49361 | 12.07.2013 15:19:19 | 3 | 49361 | 06.07.2013 11:50:00 | 15
49404 | 12.07.2013 11:10:50 | 2 | 49404 | 10.07.2013 13:01:00 | 17
49407 | 12.07.2013 11:06:58 | 1 | 49407 | 11.07.2013 11:02:00 | 1
状态 3 = 完成。我想找到那些是订单完成的任务。我检查任务完成顺序很可能是任务创建顺序。