본문 바로가기

db/oracle

oracle case when

반응형

오라클 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