티스토리 뷰

반응형

숫자 n이 음수인지, 양수인지, 0인지를 판단하기 위해 case문은 처리하기가 쉽은데
decode문에선 언뜻 생각하면 어떻게 처리해야 하나 고민하는 경우가 있습니다.
decode문이 case문에 비해 직관적이진 않지만 sql 라인수를 줄이고 짧게 사용할 수
있어 개이적으로 자주 사용하는 함수입니다.
그럼 decode에서 숫자 n이 음수인지 양수인지 아니면 0인지 어떻게 판단할 까요?
바로 sign 함수를 이용하면 됩니다.
즉 sign(음수) -> -1이고 sign(0) -> 0, sign(양수) -> 1
이렇게 결과가 나오기 때문에 컬럼 A가 음수, 양수가 있을때 음수와 양수를 각각
sum 할려면 decode 문에서 sign함수를 다음과 같이 사용하시면 됩니다.

select sum(decode(sign(A), -1, sum(A)), -- 음수합계
         sum(decode(sign(A),  1, sum(A))   -- 양수합계
from TEST_T;
반응형