오라클 조건문 0 4 141

by 아침이네 [Oracle 기초] 오라클 [2021.10.14 10:36:40]


오라클에서 특정 조건에 따라 다른 테이블을 조회할 수 있을까요?

select * from 기관테이블 a, 주소테이블 b

where a.dongcode=b.dongcode and 기관명 like '%서울%' and a.use='Y'

 

이렇게 하는데 dongcode가 a테이블이든 b테이블이든 null 일 때가 있어서

 

a.dongcode is not null 이면 위에 처럼 하고

a.dongcode is null 이면 기관명 like '%서울%' 까지만 하고 SELECT 에서 기관코드 ,기관명 만 하고

GROUP BY 기관코드, 기관명

 

이렇게 할려고 하는데 CASE WHEN 으로 어떻게 해야 할까요? 다른 방법이 있을까요?

 

by 마농 [2021.10.14 10:47:25]

질문이 잘 이해가 안가지만..
왠지 아우터 조인 하면 될 것 같아요.
a.dongcode = b.dongcode(+)


by 아침이네 [2021.10.14 11:19:37]
SELECT A.INSTT_CODE, A.INSTT_NM, B.ADDR_NM 
FROM 테이블 A,테이블 B 
WHERE A.DONG_CODE = B.DONG_CODE AND INSTT_NM LIKE '%서울%' AND 
     A.USE_SE = 'Y'
ORDER BY A.INSTT_CODE 

 

가 있고

SELECT A.INSTT_CODE, A.INSTT_NM 
FROM 테이블 A, 테이블 B 
WHERE A.DONG_CODE IS NULL AND INSTT_NM LIKE '%서울%' GROUP BY A.INSTT_CODE, A.INSTT_NM 
ORDER BY A.INSTT_CODE

가 있습니다 1번째는 dong_code 가 null 이 아닌거고 두번째는 null 인 겁니다 한개의 쿼리로 이걸 할 수 있는 방법은 없을까요?

두번째꺼에 B.ADDR_NM 을 뺐는데 이유는 B.ADDR_NM 을 넣으면 group by에도 추가해줘야 하는데 그럼 한 개의 instt_code에 여러개의 주소가 각각 매칭된 채로 값이 조회되기 때문에 뺐습니다


by 마농 [2021.10.14 12:53:12]

두번째 쿼리는 조인 조건이 없는 잘못된 쿼리입니다.
위에 언급한 대로 첫번째 쿼리를 아우터 조인으로 바꾸시면 됩니다.


by 아침이네 [2021.10.14 13:43:40]

답변 감사합니다

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