Алло,
Моя цель состоит в том, чтобы сгенерировать таблицу, в которой показана сумма каждого КОДА, принадлежащего владельцу. Обратите внимание, что к каждому владельцу должен быть привязан КОД, независимо от того, ОБЩЕЕ значение равно нулю. Таким образом, к каждому из APPROVAL_ID будет привязано APP, REJ, CAN.
APPROVAL_ID CODE TOTAL
----------- ---- -----
101 APP 2
101 REJ 1
101 CAN 3
102 APP 2
102 REJ 4
102 CAN 0
103 APP 0
103 REJ 0
103 CAN 4
Итак, вот исходный код:
select approval_id, code, total
from (
select 'APP' code, '1' seq from dual
union all
select 'REJ' code, '2' seq from dual
union all
select 'CAN' code, '3' seq from dual
)
left outer join (
select m.approval_id, own.name, m.decision, count(*) total,
case own.channel
when 'CH1' then 'CH1'
when 'CH2' then 'CH2'
else 'Others Channel'
end the_channel
from tableM m, owner own
where m.decision in ('REJ', 'APP', 'CAN')
and own.id=m.approval_id
group by m.approval_id, own.name, m.decision, own.channel
order by m.approval_id
)
on code=decision
group by approval_id, code, total
order by approval_id;
Вывод вышеуказанного запроса выглядит следующим образом:
APPROVAL_ID CODE TOTAL
----------- ---- -----
101 APP 2
101 REJ 1
101 CAN 3
102 APP 2
102 REJ 4
103 CAN 4
Вывод внутреннего запроса выглядит следующим образом:
APPROVAL_ID CODE TOTAL
----------- ---- -----
101 APP 2
101 REJ 1
101 CAN 3
102 APP 2
102 REJ 4
103 CAN 4
Что-то было не так в запросе, потому что я знаю, что у некоторой строки общее значение равно нулю, в ней должно быть напечатано что-то вроде (нулевого) значения. Но почему это скрыто от глаз? Что-то не так с моим запросом?
Спасибо @!