NVL관련 질문입니다. 0 2 1,818

by 제일 [PL/SQL] [2012.09.24 09:42:16]


SELECT NVL(MAX(STD_VAL),0) FROM TABLE
WHERE CODE = '070179'

위와 같이 집계함수 MAX, MIN, SUM을 사용하면 NVL값이 0으로 나오는 반면에

SELECT NVL(STD_VAL,0) FROM TABLE
WHERE CODE = '070179'

위와 같이 집계함수 없는 상태로 NVL상태로 사용하면 NULL값이 나옵니다.
이유를 아시는분 계신가요?
'070179'코드의 STD_VAL에는 당연히 현재 NULL이 들어가있는 상태입니다.
by 마농 [2012.09.24 10:04:02]

착각하고 계신듯 합니다.
널이 들어가 있는것(1 Row)과 데이터가 없는것(0 Row)과의 차이점을 구별하셔야 합니다.
070179 코드의 데이터는 없을 것입니다. 널이 들어가 있는것이 아닙니다.
데이터가 없으니 NVL 함수도 동작하지 않겠지요.

그룹함수를 Group By 없이 사용하게 되면 전체 통계를 구하게 되고
이때 조건을 만족하는 자료가 없더라도 통계치는 나옵니다.(Null - 1 Row)


by 제일 [2012.09.24 10:32:40]

감사합니다. 집계함수를 사용한것 자체가 데이터가 없는 0 Rows를 1Row로 만들어 주신다는 말씀이시군요?
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입