최보름달
[SQL] CASE 함수 본문
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을 요약했습니다.
'문송한 회사생활 > SQL 공부' 카테고리의 다른 글
[SQL] 집계함수 Aggregate Function (0) | 2020.08.12 |
---|---|
[SQL] NULL 관련 함수 (NVL, ISNULL, NULLIF, COALESCE) (0) | 2020.08.12 |
[SQL] 변환형 함수 (TO_NUMBER, TO_CHAR) (0) | 2020.08.10 |
[SQL] 날짜형 함수 (SYSDATE, GETDATE, TO_NUMBER) (0) | 2020.08.10 |
[SQL] 숫자형 함수(ABS, MOD, CEIL, FLOOR, ROUND, TRUNC ...) (0) | 2020.08.09 |