- CASE : 기능적 측변에서 DECODE와 흡사하지만 좀 더 확장된 기능을 제공

  • - CASE 함수는 DECODE함수가 제공하지 못하는 비교연산의 단점을 해결할 수 있는 함수이다.
  • - DECODE함수에서 비교연산을 수행하기 위해서는 GREATEST, LEAST등의 함수를 사용해야 하지만, 
  •   CASE함수에서는 조건 연산자를 모두 사용 할 수 있다.
  • - CASE함수는 IF.. THEN .. ELSE 구문과 비슷 하다. WHEN절 다음에 여러 조건이 올 수 있다.


- 사용법

CASE
WHEN (조건1) THEN
(값1)
WHEN (조건2) THEN
(값2)
ELSE
(값3)
END

=> 조건1이면, 값1, 조건2이면 값2, 그 외에는 값3을 출력

- 예제

위의 DECODE예제를 CASE함수로 변환한 예이다.
--위의  DECODE예제를 CASE함수로 변환한 예이다. 
SELECT deptno, 
       CASE deptno
         WHEN 10 THEN 'ACCOUNTING'
         WHEN 20 THEN 'RESEARCH'
         WHEN 30 THEN 'SALES'
         ELSE 'OPERATIONS'
       END as "Dept Name"
  FROM dept;

DEPTNO Dept Name
------- ----------
     10 ACCOUNTING
     20 RESEARCH
     30 SALES
     40 OPERATIONS 

아래는 WHEN절 다음에 연산자가 오는 예제이다.

--급여별로 인상율을 다르게 계산하였다. 
SELECT ename ,
       CASE
          WHEN sal < 1000  THEN sal+(sal*0.8)
          WHEN sal BETWEEN 1000 AND 2000 THEN sal+(sal*0.5)
          WHEN sal BETWEEN 2001 AND 3000 THEN sal+(sal*0.3)
          ELSE sal+(sal*0.1)
       END sal
  FROM emp; 


'공부 > ORACLE_SQL' 카테고리의 다른 글

ORACLE_[ 집계함수(Aggregate function) ]  (0) 2013.05.20
ORACLE_[ OUTER JOIN ]  (0) 2013.05.20
ORACLE_[ JOIN ]  (2) 2013.05.20
ORACLE_[CREATE TABLE]  (0) 2013.01.09
ORACLE_[DECODE문_사용법]  (0) 2012.10.05

+ Recent posts