반응형
오라클 CASE WHEN
oracle case when
- 오라클 CASE WHEN 문은 다양한 조건에 따라 다른 값을 반환하는 SQL의 강력한 기능입니다. 마치 프로그래밍 언경의 if-else 문과 유사하게, 특정 조건이 참일 때 원하는 값을 출력하거나 계산을 수행할 수 있습니다.
기본 구조
CASE
WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
...
ELSE 결과N
END
- CASE : CASE 문의 시작을 알립니다.
- WHEN 조건 : 특정 조건을 나타냅니다.
- THEN 결과 : 조건이 참일 때 반환되는 값입니다.
- ELSE 결과 N : 모든 조건에 해당하지 않을 때 반환되는 값입니다. ELSE는 생략 가능하며, 생략하면 NULL 값이 반환됩니다.
사용 예시
- 컬럼 값에 따른 분류
SELECT employee_id, salary,
CASE
WHEN salary >= 10000 THEN '고소득'
WHEN salary >= 5000 THEN '중간 소득'
ELSE '저소득'
END AS salary_category
FROM employees;
※ 위 쿼리는 employees 테이블의 salary 컬럼 값에 따라 '고소득', '중간 소득', '저소득'으로 분류하여 salary_category 컬럼에 추가합니다.
날짜 계산
SELECT hire_date,
CASE
WHEN hire_date < TO_DATE('20230101', 'YYYYMMDD') THEN '2023년 이전 입사'
ELSE '2023년 이후 입사'
END AS hire_year
FROM employees;
※ 입사일이 2023년 이전인지 이후인지에 따라 hire_year 컬럼에 문자열을 추가합니다.
NULL 값 처리
SELECT column1,
CASE
WHEN column1 IS NULL THEN '값 없음'
ELSE column1
END AS column1_value
FROM your_table;
※ column1 컬럼이 NULL 값일 경우 '값없음'으로 대체합니다.
추가 설명
- 중첩 CASE WHEN : CASE WHEN 문 안에 또 다른 CASE WHEN 문을 중첩하여 복잡한 조건을 표현할 수 있습니다.
- Searched CASE : CASE 뒤에 표현식을 직접 넣어 조건을 비교할 수 있습니다.
- Simple CASE : CASE 뒤에 비교할 값을 직접 넣고 WHEN 절에서 비교 값과 일치하는지 확인할 수 있습니다.
주의 사항
- CASE WHEN 문은 SELECT 문에서 주로 사용되지만, WHERE 절이나 HAVING 절에서도 사용될 수 있습니다.
- 너무 복잡한 CASE WHEN 문은 가독성을 떨어뜨릴 수 있으므로, 필요에 따라 서브쿼리나 함수를 활용하는 것이 좋습니다.
활용 분야
- 데이터 분석 : 다양한 범주로 데이터를 분류하고 통계를 계산하는 데 사용
- 보고서 작성 : 조건에 따라 다른 값을 표시하여 보고서를 작성하는 데 사용
- 데이터 변환 : 데이터 형식을 변환하거나 특정 값을 다른 값으로 대체하는 데 사용
반응형
'db > oracle' 카테고리의 다른 글
nvl 함수와 nvl2 함수의 차이점 (0) | 2025.01.23 |
---|---|
오라클 DECODE 함수와 NULL 값 처리 (0) | 2025.01.23 |
오라클 decode 부등호 (0) | 2025.01.22 |
오라클 nvl (0) | 2025.01.22 |
오라클 decode 다중조건 (0) | 2025.01.21 |