SQL CASE WHEN 질문 드립니다. 0 2 802

by SQL모험가 [2022.01.31 11:39:18]


oracle 9i이고

case when 사용중에 값이 반환이 되지 않아 질문드립니다.

EMP_TABLE이라는 사원테이블에서

DEPART_CODE로 해당 부서를 조회하였을때,

만약에 MAX(EMP_NO)가 존재한다면 MAX(EMP_NO) + 1 하고

존재하지 않는 다면 1을 반환하려 합니다.

 

다만 해당 부서의 MAX(EMP_NO)가 존재할때는 최대값 + 1이 정상적으로 반환되나

존재하지 않을때는 1이 아닌 null로 반환됩니다.

SELECT 
CASE 
WHEN 
EXISTS (SELECT MAX(EMP_NO) FROM EMP_TABLE WHERE DEPART_CODE = '10') 
THEN (SELECT MAX(EMP_NO) + 1 FROM EMP_TABLE WHERE DEPART_CODE = '10') 
ELSE 1
END as EMP_NO
FROM DUAL;

잘못된 부분 알려주셨으면 합니다.

by SQL모험가 [2022.01.31 11:48:10]

아 해결하였습니다.

SELECT MAX(EMP_NO) FROM EMP_TABLE WHERE DEPART_CODE = '10' 이 부분에서 MAX()를 빼니까 정상적으로 작동하는군요


by 마농 [2022.02.01 10:34:56]
SELECT NVL(MAX(emp_no), 0) + 1 emp_no
  FROM emp_table
 WHERE dept_code = '10'
;

 

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