일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Notice
Tags
- 홈트
- data
- ERD
- 보울룸
- 30일글쓰기
- 회사싫어
- constraint
- 도전
- 전생
- Drop
- SQLD
- 책리뷰
- Update
- 인덱스
- 30일챌린지
- 회사생활
- ROWNUM
- INSERT
- rename
- 빅데이터
- 데이터모델링
- SQL
- 직장인일기
- null
- 테이블삭제
- 일기
- where절
- 직장생활
- 환생
- 넷플릭스
Archives
- Today
- Total
최보름달
[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 |