2013-09-17 1 views
0

У меня есть две таблицы, в которых первая хранит данные задачи (имя задачи, create date, assign_to и т. Д.), А вторая таблица хранит данные истории задач, например operation_date, задача выполнена, задача отклонена и т. Д. . (Таблица задач и задач)Статус дополнения отчетов и параметров только для создания и operation_date

Компания создает задачи и назначает их сотрудникам, затем сотрудники принимают задачи и завершают их.

Столбец 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 = завершен. Я хочу найти, что это задачи, выполненные по заказу. Я проверяю, что полный заказ задачи, скорее всего, будет задан для создания задания.

+1

Показаны примеры данных и ожидаемый результат. – Noel

+0

@ Ramblin'Man обновлено – Tugrul

+0

Какой результат вы ожидаете? – Noel

ответ

1

Возможно, вам придется использовать функцию ROW_NUMBER вместо ROWNUM.

SELECT a.id, a.create_date, 
     row_number() over (order by a.create_date) r_t, 
     b.record_date, 
     row_number() over (order by b.record_date) r_h 
from wfm_task a left outer join task_history b 
       on a.id = b.wfm_task 
where b.status = 3 
    and b.record_date between date'2013-07-12' - 1 and date'2013-07-12' + 1 

Демо-версия here.

+0

Woaw, отлично. Большое спасибо. Редактировал некоторые из столбцов, и он отлично работает. – Tugrul

Смежные вопросы