CASE WHEN : 원하는 조건 만들기
- CASE문은 함수가 아닌 표현식의 일종, 여러 함수나 연산자를 이용하여 조건을 만드는 방법
- DECODE 동등조건에서 사용, 오라클에서만 사용 가능
1. 단일 조건
1-1. DECODE()
SELECT 컬럼명
, DECODE(컬럼명, 조건, 1(반환결과1), 0(반환결과2)) -- 맞으면 1, 틀리면 0 출력
FROM 테이블명
;

1-2. CASE WHEN()
SELECT 컬럼명
, CASE WHEN 컬럼명 = 조건 THEN 1(반환결과1) ELSE 0(반환결과2) END -- 맞으면 1, 틀리면 0 출력
FROM 테이블명
;

2. 다중 조건
2-1. DECODE()
SELECT 컬럼명
, DECODE(컬럼명, 조건1, 반환결과1, 조건2, 반환결과2 ... 반환결과3)
FROM 테이블명
;

2-2. CASE WHEN()
SELECT 컬럼명
, CASE WHEN 컬럼명 = 조건1 THEN 반환결과1
WHEN 컬럼명 = 조건2 THEN 반환결과2
WHEN 컬럼명 = 조건3 THEN 반환결과3
ELSE 반환결과4 END
FROM 테이블명
;

3. 예외 조건
3-1. 구간조건

- 일반적으로 1:1대응 조건이라면 DECODE가 간결하고 편하지만, 구간에 대한 조건의 경우는 CASE WHEN으로 작성해야 한다.
3-2. null값 처리

4. 연습문제
- 사원의 입사일 ~2020.1.1 까지의 근속개월수를 구해 근속년수로 산출
- 근속년수가 15년을 초과하면 기본급여에 보너스 10,000 추가
- 근속년수가 10년을 초과, 15년 이하이면 보너스 7,000 추가
- 근속년수가 10년 이하이면 보너스를 5,000추가

15일차 인증!


'클래스 리뷰 > 22.05 빡공단 SQL 강의' 카테고리의 다른 글
빡공단 22기 도전기 - SQL 그룹함수1 (17일차) (0) | 2022.11.30 |
---|---|
빡공단 22기 도전기 - SQL 작성 방법 및 유의사항 (16일차) (0) | 2022.11.30 |
빡공단 22기 도전기 - SQL 날짜 및 그룹 함수 (14일차) (0) | 2022.11.30 |
빡공단 22기 도전기 - SQL 데이터 정의 함수 (13일차) (0) | 2022.11.30 |
빡공단 22기 도전기 - SQL 문자 함수2 (12일차) (0) | 2022.11.30 |
댓글