SQL을 배우다 보면 꼭 마주치는 문법 중 하나가 CASE WHEN ELSE 구문입니다.
이 구문은 조건에 따라 값을 다르게 표현할 수 있도록 해주는 일종의 if문 역할을 해요.

이 글에서는 CASE WHEN ELSE의 기본 사용법부터, 실전에서 자주 쓰이는 활용 예제실력자 팁까지 소개합니다.

 

 

1. CASE WHEN ELSE란? 

CASE는 SQL에서 조건 분기(조건문)를 처리할 수 있는 키워드입니다.
가장 기본적인 구조는 다음과 같아요:

SELECT
  CASE
    WHEN 조건1 THEN 결과1
    WHEN 조건2 THEN 결과2
    ELSE 기본값
  END AS 별칭
FROM 테이블명;

 

🧠 쉽게 말하면?

 

  • WHEN → 조건이 맞으면
  • THEN → 이 값을 출력해!
  • ELSE → 위 조건 다 안 맞으면 이 값 출력!
  • END → 여기서 조건문 끝!
  • AS 별칭 → 결과에 붙일 이름

 

🔍 2. 예제로 배우는 CASE

예제 1. 점수에 따른 학점 분류

SELECT
  name,
  score,
  CASE
    WHEN score >= 90 THEN 'A'
    WHEN score >= 80 THEN 'B'
    WHEN score >= 70 THEN 'C'
    ELSE 'F'
  END AS grade
FROM students;

 

→ 결과적으로 각 학생의 점수(score)에 따라 학점(grade)을 계산해주는 쿼리입니다.

 

💡 3. 실전 활용 팁 3가지

팁 1. CASE는 SELECT뿐 아니라 WHERE, ORDER BY에도 사용 가능!

SELECT *
FROM orders
WHERE
  CASE
    WHEN status = 'cancelled' THEN 'no'
    ELSE 'yes'
  END = 'yes';

→ 단, WHERE에서 CASE를 쓰는 건 가독성이 떨어질 수 있으므로 주의!
보통 SELECT, ORDER BY, GROUP BY에서 더 자주 활용됩니다.

 

팁 2. CASE를 ORDER BY에 써서 조건 정렬 가능!

SELECT name, role
FROM employees
ORDER BY
  CASE role
    WHEN 'manager' THEN 1
    WHEN 'staff' THEN 2
    ELSE 3
  END;

→ manager > staff > 기타 순으로 정렬하고 싶을 때 아주 유용합니다.

 

 

✅ 팁 3. CASE는 중첩도 가능!

SELECT
  name,
  CASE
    WHEN score >= 90 THEN 'A'
    WHEN score >= 80 THEN
      CASE
        WHEN score >= 85 THEN 'B+'
        ELSE 'B'
      END
    ELSE 'C 이하'
  END AS grade_detail
FROM students;

→ 조건 안에 조건이 들어가 있는 구조. 너무 복잡하면 유지보수가 어려워지니 조심해서 사용하세요!

 

⚠️ 주의할 점

 

📌 정리하자면

 

✨ 결론 & 마무리

SQL의 CASE WHEN ELSE는 초보자에게는 조금 생소할 수 있지만, 익숙해지면 데이터를 더 풍부하게 표현할 수 있는 강력한 무기입니다.
특히 리포트용 쿼리 작성이나, 조건별 요약 데이터를 만들 때 정말 자주 쓰여요.

숙련자 Tip 💡
자주 쓰는 조건 분기를 뷰(View)나 CTE(Common Table Expression)로 따로 뽑아두면
가독성도 좋고 유지보수도 편해집니다!

 

+ Recent posts