COUNT ROW 질문 드립니다 0 5 1,619

by 낭만캐치 [2014.10.06 13:12:38]


안녕하세요

카운트를 구하는데 ROW는 3이고

제가 만든 문장은 이렇습니다.

 

select A.CD --구분코드

     , COUNT(*) as 개수 --

from A A

where A.CD in ( 'Z','B','O')

and A.sysoccdt between to_date('20141006', 'yyyymmdd') -1

and to_date('20141006', 'yyyymmdd')

 

입니다.

 

날짜로 카운트 하는것인데 이게 값이 Z, B, O의 값이 다 있을때에는 ROW가 3개 가 나오지만

Z , B의 값만 있고 O의 값이 없을 때는 안나오는데

없을 때도 0으로 표현 하고싶습니다.

어떻게해야할까요?

읽어주셔서 감사합니다

by 우리집아찌 [2014.10.06 13:17:37]
-- OUTER JOIN 
SELECT * FROM
(SELECT DECODE(LEVEL,1,'Z',2,'B',3,'O') CD FROM DUAL CONNECT BY LEVEL <= 3 ) T1
LEFT OUTER JOIN 
(select A.CD --구분코드
     , COUNT(*) as 개수 --
from A A
where A.CD in ( 'Z','B','O')
and A.sysoccdt between to_date('20141006', 'yyyymmdd') -1
and to_date('20141006', 'yyyymmdd') )T2
ON T1.CD = T2.CD

 


by 낭만캐치 [2014.10.06 13:51:29]

우리집아찌님 답변 감사합니다.

덕분에 해결하였습니다^^


by 마농 [2014.10.06 13:50:16]

Left 냐 Right 냐가 중요한게 아닙니다.

Outer Join 이 포인트입니다.

자료가 안나온다면? Select 절에서 잘못 하신 듯 합니다.

SELECT t1.cd, NVL(t2.개수, 0) AS 개수


by 낭만캐치 [2014.10.06 13:51:12]

네 마농님 답변 감사합니다! 해결하였습니다.

오늘도 즐거운 하루되세요^^


by 우리집아찌 [2014.10.06 16:11:41]

수정완료~~

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입