쿼리 결과 레코드가 없을 때 쿼리로 값을 얻는 법이 있을까요? 0 2 6,930

by 손님 [Oracle 기초] 레코드 nvl [2012.01.19 11:56:59]


안녕하세요.
nvl를 사용해서 null인 경우에 0값을 보여주록 쿼리를 만들었는데..
에러가 있어 검색을 해보니
레코드가 아예 없는 경우는 예외가 된다는 글을 보았습니다.
대신 count(seq)를 사용해보라고 하더라고요. 그런데 해보니 마찬가지로 레코드가 없다는 결과만 나왔습니다.
아래는 적용하려는 쿼리였습니다~
어떻게 해야 될까요?
SELECT
   NVL(MAX(TO_NUMBER(A.SEQ)), 0) + 1 SEQ
   , NVL((SELECT MAX(SORT) FROM TEST WHERE A.DEPT_NO = DEPT_NO), 0) + 1 SORT
  FROM
   TEST A
  WHERE
   A.DEPT_NO = '1234'
  GROUP BY
   A.DEPT_NO

by 느훼훼 [2012.01.19 13:25:55]
저 WHERE 조건으로 조회해보면 조회되는게 있긴 있나요?
그리고 제가 해보니까 컬럼값이 NULL 이더라도 에러없이 잘 되던데요..
NVL 자체가 해당 값이 NULL일 때, 다른 값으로 넣어주는 기능을 하는건데
에러가 날 이유도 없을거 같고....
저도 이 질문에 대한 답을 알고 싶네요~

에러날때 오라클 에러 코드 함 알려주세요~ 궁금하네요~

by 마농 [2012.01.19 13:30:07]
쓸모없는 구문이 많네요.
그냥 쓸모없는게 아니라 성능저하 및 에러 유발 구문이네요.

1. Group By 를 빼세요.
2. 서브쿼리도 빼세요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입