Я пытаюсь написать простой SQL-оператор для построения отчета Oracle, но я застрял в какой-то момент. Таблица x_request содержит сделанные запросы, а различные задачи, связанные с выполненными конкретными запросами, хранятся в x_request_work_log . Подведем итог структуры этих таблиц:
X_request
-id
-name
-requester
-request_date
x_request_work_log
-id
-request_id (foreign key)
-taskId
-start_date
-end_date
Теперь давайте предположим, что эти таблицы заполнены образцами данных следующим образом:
x_request
id name requester request_date
1 firstReq John 01/01/2012
2 secondReq Steve 21/01/2012
x_request_work_log
id requestId taskId startDate endDate
1 1 0 01/01/2012 03/01/2012
2 1 1 04/01/2012 04/01/2012
3 1 2 05/01/2012 15/01/2012
4 2 0 24/01/2012 02/02/2012
Шаблон моего отчета следующий:
requestName timeSpent(task(0)) timeSpent(task(1)) timeSpent(task(2))
| | | | | | | |
Итак, вот где я застрял. Мне нужен оператор Sql Select, который будет возвращать каждую строку в отформатированном виде, как описано выше. Как я могу получить и отобразить даты начала и окончания различных задач. Btw timeSpent = endDate (task (x)) - startDate (task (x))
Примечание: Использование разных подзапросов для каждого расчета затраченного времени не является возможным из-за ограничений производительности. Должен быть другой путь.