У меня следующая проблема SQL.
Сценарий:
У меня есть две таблицы: Change и ChangeTicket.
Существует отношение 1: n. Одно изменение имеет несколько или несколько изменений.
Отсутствие изменений означает отсутствие изменений.
У ChangeTicket есть статус (открыт / закрыт / ...)
В ChangeTicket есть поле, представляющее, сколько минут заняло это изменение.
У изменения есть компания и месяц. В месяце самое большее одно изменение.
Я должен отчитаться за данную компанию и за данный месяц сумму минут
данное изменение заняло.
Я написал следующий оператор SQL.
select nvl(sum(service_req), 0) as SUM_REQ
from Change_Ticket, Change
where Change.company_id (+) = '0'
and Change.month (+)='07'
and Change.Id (+) = Change_Ticket.Change_Id
Это нормально.
Если за данный месяц и у данной компании нет ни изменений, ни билетов
затем я получаю нулевое значение, которое преобразуется в cero, используя функцию NVL.
Проблема возникает, когда я хочу сгруппировать информацию, используя статус.
Если я добавлю предложение Grup
select Change_Ticket.status, nvl(sum(service_req), 0) as SUM_REQ
from Change_Ticket, Change
where Change.company_id (+) = '0'
and Change.month (+)='07'
and Change.Id (+) = Change_Ticket.Change_Id
group by Change_Ticket.status
тогда мой результат - пустой набор.
Я понимаю, что нет статуса, а затем результирующий набор
как-то непротиворечиво, а затем возвращается пустой результирующий набор.
Как мне избежать этой проблемы. В этом случае мне нужно сообщить
пустое состояние и cero в качестве суммы.
(Кстати, я также пытался поставить nvl (Change_Ticket.status, 'none') , но не работал)
Заранее большое спасибо.
Луис