Oracle2016. 10. 26. 13:53

서브 쿼리로 결과 값을 테이블로 만들어 놓고 그 테이블의 데이터로 다시 쿼리를 해야 하는데(예를 들어 Case When등을 쓰는경우) 서브쿼리의 결과 값이 없을 경우 제대로 된 값을 뽑아내지 못할때가 있다.

그럴땐 결과 값이 있는것처럼 만들어야 하는 경우가 발생하는데..

이럴땐 Max나 Min을 쓰도록 하자.


select case when (a.ncd + a.lld < sysdate) then 'true' else 'false' end as result from ( select nvl(change_day, 90) as ncd ,(case when login_date is null then to_date('20160401','yyyymmdd') when login_date > to_date('20160401','yyyymmdd') then login_date END) as lld from ( select min(login_date) as login_date, min(change_day) as change_day from FT_PWD_CHANGE where site_id='aaaa' AND login_id='bbbb' ) ) a


서브쿼리 컬럼 값에 min을 쓴것을 볼수 있을것이다.

min을 안썼을 경우에는 결과값이 아예 나오지 않지만 min을 쓰면 결과값이 정상적으로 출력 된다.

Posted by Z700zZz