본문 바로가기
IT 개발/에러

[Oracle] SUM()해도 결과가 안 나올 때

by Dev.Jeon 2023. 3. 14.
반응형

에러메시지

에러메시지가 없고 실행도 잘 되었는습니다. 

전부 더했는데 결과가 나왔다가 안 나왔다가 합니다.

 

현상/원인


 SUM(DECODE(DAY1,'100',1,0,0)
	+DECODE(DAY2,'100',1,0,0)
   	+DECODE(DAY3,'100',1,0,0)
   	+DECODE(DAY4,'100',1,0,0)
   	+DECODE(DAY5,'100',1,0,0) 
   	+DECODE(DAY6,'100',1,0,0)
   	+DECODE(DAY7,'100',1,0,0)
    ...생략
    ) O_ALL

DAY1~DAY31까지 더하여 카운트를 세어주는 칼럼입니다.

어떤 것은 카운트가 되는데 어떤 결과는 카운트가 안 됩니다.

데이터 값이 무조건 있다면 무조건 결과가 나왔겠지만 NULL인 경우 SUM이 되지 않습니다.

이런 경우 NULL값에 대해서 처리를 해줘야 합니다.

해결

 SUM(NVL(DECODE(DAY1,'100',1,0,0),0)
	+NVL(DECODE(DAY2,'100',1,0,0),0)
   	+NVL(DECODE(DAY3,'100',1,0,0),0)
   	+NVL(DECODE(DAY4,'100',1,0,0),0)
   	+NVL(DECODE(DAY5,'100',1,0,0),0) 
   	+NVL(DECODE(DAY6,'100',1,0,0),0)
   	+NVL(DECODE(DAY7,'100',1,0,0),0)
    ...생략
    ) O_ALL

NVL로 NULL값일 경우 0으로 대체할 수 있도록 조치하니 잘 카운트됩니다.

 

반응형

댓글