본문 바로가기

오라클/SQL

[펌]오라클 SQL의 decode함수 사용법

반응형

* DECODE란 오라클에서만 지원하는 함수로서
SELECT문장내에서 비교연산을 수행해 주는 아주 편리한
함수입니다.

형식은 다음과 같이 사용하시면 됩니다.
DECODE(deptname, 'A',1,0)
-> deptname이 'A'와 같으면 1을 갖고 아니면 0을 갖게 됩니다.

또는 SUM함수로 합계를 내줄 수 있습니다.
SUM(DECODE(deptname, 'A',1,0)
-> deptname이 'A'와 같으면, 1을 누적하고,아니면 0을 갖게 됩니다.

2중 DECODE문도 허용됩니다. 다음을 보도록 하겠습니다.

DECODE(deptname, 'A',DECODE(name,'KIM',1),0)
-> deptname이 'A'와 같고, name이 'KIM'이면, 1을 같고,
아니면, 0을 갖는다.

2중 DECODE문을 쓸때 두개의 DECODE문은 AND연산으로 수행됨을
명심하길 바랍니다.

기타 DECODE문과 오라클내에서 쓸 수 있는 여러가지 함수를
혼용해서 쓸수 있습니다.
예를들면, 문자열을 잘라주는 SUBSTR함수라든가, 위에서 사용한
SUM함수 등을 혼용해서 쓸 수 있습니다.
이렇게 원하는 sql문을 구사하기 위해서는 많은 실습과 경험과 그리고,
시행착오가 필요합니다.
DECODE문을 사용해서 조건에 맞는 항목에 대한 연산도 가능합니다.
다음을 보도록 하겠습니다.

문제) 사원테이블(PA06MR0)에서 영문성이 'KIM'으로 시작하는
사람과 'LEE'로 시작하는 사람의 합을 구하라. 단 입사년도
가 올해(1998)인 사람의 합을 구하라.

SELECT EMPNAME,
SUM(DECODE(SUBSTR(EMPNAME,1,3),'KIM',1,0)
+ DECODE(SUBSTR(EMPNAME,1,3),'LEE',1,0)),
FROM PA06MR0
WHERE SUBSTR(entondate,1,4) = '1998';
GROUP BY EMPNAME;

;오라클에서 SUM이라는 함수를 쓸 경우에는 반드시
위에서 처럼 GROUP BY를 써 주어야 합니다.
(SUM함수와 같은 그룹함수에는 MAX,MIN,COUNT,AVG등이 있습니다.)

 

 

 

 

 

'오라클 > SQL' 카테고리의 다른 글

table space auto extent 조회  (0) 2012.06.22
DECODE 함수 를 이용한 IF 처리의 효율화  (0) 2012.06.19
oracle user 권한  (0) 2012.06.04
oracle 에서 SID 확인  (0) 2012.05.18