- 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 |