문송한 회사생활/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을 요약했습니다.