Hallo, 내 목표는 소유자에게 속한 각 CODE의 합계를 표시하는 테이블을 생성하는 것입니다. TOTAL 값이 0이더라도 상관없이 각 소유자는 CODE를 묶어야합니다. 그래서 APP, REJ, CAN이 각각 APPROVAL_ID에 묶여있을 것입니다.왜 외부 조인 쿼리가 작동하지 않습니까?
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
102 CAN 0
103 APP 0
103 REJ 0
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
Something w 행의 일부가 0의 전체 값을 가짐을 알고 있기 때문에 쿼리에 맞지 않기 때문에 (null) 값을 출력해야합니다. 그런데 왜 그것이 시야에 숨겨져 있습니까? 내 쿼리에 문제가 있습니까?
THanks @!
해야한다는 것입니다? 'CH1'을 입력 한 다음 'CH2'를 누른 다음 'CH2'를 입력하면 'm.approval_id, own.name, m.decision, count (*) total, case own.channel을 선택하십시오. else'기타 채널 '은 tableM에서 the_channel을 종료합니다. m.approval_id, staff.staff_name, m.decision, own.channel order by m에 의해 ('REJ', 'APP', 'CAN') 및 own.id = m.approval_id 그룹의 m.decision이있는 소유자 자신. approval_id) – forsvarir
@forsvarir 내부 쿼리의 결과를 추가했습니다. 이는 상위 출력과 정확히 같습니다. – huahsin68
내부 쿼리의 staff.staff_name은 무엇입니까? –