반응형

 

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;

 

반응형