p. 242
*단일행 CASE 표현의 종류
CASE 표현 |
함수 설명 |
CASE SIMPLE_CASE_EXPRESSION 조건 ELSE 표현절 END |
SIMPLE_CASE_EXPRESSION 조건이 맞으면 SIMPLE_CASE_EXPRESSION 조건내의 THEN 절을 수행하고, 조건이 맞지 않으면 ELSE 절을 수행한다. |
CASE SEARCHED_CASE_EXPRESSION 조건 ELSE 표현절 END |
SEARCHED_CASE_EXPRESSION 조건이 맞으면 SEARCHED_CASE_EXPRESSION 조건내의 THEN 절을 수행하고, 조건이 맞지 않으면 ELSE 절을 수행한다. |
DECODE(표현식, 기준값1, 값1 [, 기준값2, 값2, … , 디폴트값]) |
Oracle에서만 사용되는 함수로, 표현식의 값이 기준값1이면 값1을 출력하고, 기준값2이면 값2를 출력한다. CASE 표현의 SIMPLE_CASE_EXPRESSION 조건과 동일하다. |
*CASE 표현은 함수의 성질을 가지고 있으므로, 다른 함수처럼 중첩해서 사용할 수 있다.
예제) 사원 정보에서 급여가 2000 이상이면 보너스를 1000으로, 1000 이상이면 500으로, 1000 미만이면 0으로 계산한다.
SELECT ENAME, SAL,
CASE WHEN SAL >= 2000
THEN 1000
ELSE ( CASE WHEN SAL >= 1000
THEN 500
ELSE 0
END)
END as BONUS
FROM EMP;
예제) 부서 정보에서의 부서 위치를 미국의 동부, 중부, 서부로 구분하라.
SELECT LOC,
CASE LOC
WHEN ‘NEW YORK’ THEN ‘EAST’
WHEN ‘BOSTON’ THEN ‘EAST’
WHEN ‘CHICAGO’ THEN ‘CENTER’
WHEN ‘DALLAS’ THEN ‘CENTER’
ELSE ‘ETC’
END as AREA
FROM DEPT;
예제) 사원 정보에서 급여가 3000 이상이면 상등급, 1000 이상이면 중등급으로, 1000 미만이면 하등급으로 분류하라.
SELECT ENAME,
CASE WHEN SAL >= 3000 THEN ‘HIGH’
WHEN SAL >= 1000 THEN ‘MID’
ELSE ‘LOW’
END AS SALARY_GRADE
FROM EMP;
'개발 및 관리 > Oracle 9i, 10g, 11g, 12c, 19c' 카테고리의 다른 글
GROUP BY절과 HAVING절의 특성 - SQL전문가 가이드 p.256 (0) | 2012.03.28 |
---|---|
NVL(oracle)/ISNULL(mssql) 함수의 특성, SQL전문가 가이드 p.245 (0) | 2012.03.28 |
ORA-16038, ORA-19809, ORA-00312 (0) | 2012.03.20 |
AUTOTRACE(이펙티브 오라클에서 발취, 정보문화사, TOMAS KTYE저) (0) | 2012.02.13 |
Static vs. Dynamic SQL (0) | 2012.02.13 |