서브 쿼리로 결과 값을 테이블로 만들어 놓고 그 테이블의 데이터로 다시 쿼리를 해야 하는데(예를 들어 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을 쓰면 결과값이 정상적으로 출력 된다.
'Oracle' 카테고리의 다른 글
ora-01007 variable not in select list (0) | 2019.06.21 |
---|---|
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor (0) | 2016.02.02 |
Oracle 스키마, 테이블 스페이스 생성.. (0) | 2016.02.01 |
오라클에 설정된 디렉터리 확인.. (0) | 2016.02.01 |
ora-01034 oracle not available (0) | 2015.09.18 |