최보름달

[SQL] CASE 함수 본문

문송한 회사생활/SQL 공부

[SQL] CASE 함수

PieMoon 2020. 8. 10. 23:50

CSAE 표현은 IF - THEN - ELSE 논리와 유사항 방식으로 사용할 수 있는 함수이다. 

오라클에서는 DECODE  함수를 사용할 수도 있다. 

 

 

예시

SELECT   ENAME,                     -- 직원이름
         CASE   WHEN  SAL > 2000    -- 급여가 2,000 초과면
                THEN  SAL           -- 급여를 표시하고
                ELSE  2000          -- 해당하지 않으면 2,000을 표시하라
         END    REVISED_SALARY      -- CASE 행의 이름은  REVISED_SALARY 다
FROM     EMP ;

 

이렇게도 가능하다. 

SELECT   ENAME,                                   -- 직원이름
         CASE   WHEN  SAL >= 3000 THEN 'HEIGH'    -- 급여가 3,000 이상이면 높음
                WHEN  SAL >= 1000 THEN 'MID'      -- 1000 이상이면 중급
                ELSE  'LOW'                       -- 해당하지 않으면 낮음을 표시하라
         END    AS SALARY_GRADE                   -- CASE 행의 이름은  SALARY_GRADE  다
FROM     EMP ;

 

중첩도 가능하다. 

SELECT   ENAME,                                 -- 직원이름
         CASE   WHEN  SAL >= 2000 THEN  1000    -- 급여가 2,000 이상이면 1,000  
                ELSE  (CASE WHEN SAL >= 1000    -- 해당하지 않으면, 1000 이상이면 
                            THEN 500            -- 500, 나머지는 0
                            ELSE 0
                       END) 
        END    AS BONUS                   -- CASE 행의 이름은  보너스  다
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'                       -- 나머지면 ETC
END      as AREA                     -- 끝. CASE 행의 이름은 AREA 다. 
FROM DEPT ;

 

 

 

 

 

kdata 한국데이터진흥원에서 출간한 SQL 전문가 가이드 2013 Edition을 요약했습니다.