最初のテーブルにタスク データ (タスク名、create date
assign_to など) を格納し、2 番目のテーブルにタスク履歴データoperation_date
(タスクの完了、タスクの拒否など) を格納する 2 つのテーブルがあります (Task および Task_history テーブル)。
会社がタスクを作成して従業員に割り当て、従業員がタスクを受け入れて完了します。
タスクcreate_date
列は実行するタスクの順序を指定し、両方operation_date
のcompleted status
列はタスク補完の順序を指定します。
従業員の詳細を報告するためのクエリが必要です。従業員は最初に指定された順序でタスクを完了しますか? 与えられたシーケンスに従って完了したタスクはいくつありますか?
特定の日の従業員の task_creation および operation_date のテーブルを注文するステータス完了タスクのクエリを試みました。次に、select クエリの rownum を追加してから、2 つのテーブルを結合します。行数が等しい場合、従業員は指定されたシーケンスのタスクを完了します。しかし、クエリの結果は私が期待したものとは異なりました。そのように表示される行番号、 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 = 完了。注文によって完了したタスクを見つけたいです。タスクの完了順がタスクの作成順になりやすいことを確認します。