본문 바로가기
MS-SQL

[MS-SQL] CASE 문 완전정복 – 조건 분기로 실무 SQL 마스터하기

by ☆평산훈남☆ 2025. 6. 5.
반응형
🔍 요약: MS-SQL CASE 문을 활용한 조건 분기법을 실무 예제로 배워보세요. 점수 등급, 회원 상태 분류 등 실전 SQL에서 자주 쓰이는 CASE 문을 쉽게 정리했습니다.

 

MS-SQL CASE 문법 정리

 

쿼리를 작성하다 보면 조건문이 필요할때가 있어요. 예를 들면 성별코드가 M 이면 '남자', W이면 '여자' 이렇게 특정 조건에 따라서 다른 결과물을 도출해 내야할때 이럴때 우리는 CASE문을 사용해요.

 

프로그램 랭귀지에는 보통 IF문을 사용하죠?(물론 CASE문도 있습니다만..)

SQL 쿼리에서는 CASE 문을 사용한답니다. 아래 나오는 내용 읽어보시고 SQL CASE문을 마스터 해보아요.

 

📌 CASE 문이란?
CASE 문은 SQL에서 조건에 따라 다른 값을 반환하는 조건 분기문입니다. 일종의 IF-ELSE 문 역할을 하며, SELECT문, WHERE절, ORDER BY절 등 다양한 곳에서 활용됩니다.

 

1. CASE 문 기본 문법

1-1 간단한 CASE (Simple CASE) 

CASE 기준값
  WHEN 비교값 THEN 결과
  [WHEN 비교값 THEN 결과 ...]
  [ELSE 기본값]
END

위와 같이 CASE 다음의 "기준값"에 비교대상이 되는 값을 넣습니다. 보통은 저자리에 table의 column name을 넣습니다.

그리고 WHEN 다음 "비교값" 자리에는 비교 조건을 넣습니다. 이때 WHEN / THEN 구문은 필요한 만큼 셋트로 작성하시면 됩니다. 조건 하나당 WHEN / THEN 셋트 하나 추가되는 겁니다.

 

1-2 검색 CASE (Searched CASE)

CASE 
  WHEN 조건 THEN 결과
  [WHEN 조건 THEN 결과 ...]
  [ELSE 기본값]
END

 

위와 같이 CAE다음 기준값이 없이 WHEN 다음 비교 조건을 기입합니다. (ex> sex_code = 'M')

그리고 해당 조건이 만족할때 반환할 결과값을 THEN 뒤에 작성하시면 됩니다. 마찬가지로 WHEN / THEN은 비교 조건의 수만큼 계속 확장해서 사용 가능합니다. 

 

1-1, 1-2 두 문법의 차이는 값의 범위(< , >)를 비교 가능 여부에 있습니다. 두가지 문법은 각자 장단점이 있으나 머리가 너무 복잡해서 다 못외우겠다 하시는 분은 1-2 문법을 숙지하시면 됩니다. 그 이유는 1-1의 기능을 1-2가 모두 표현 가능하지만 1-2의 모든 기능을 1-1이 표현하지 못하기 때문이에요.

종류 설명 예시
1-1. Simple CASE 하나의 컬럼 값을 기준으로 비교 CASE Color WHEN 'Red' THEN ...
1-2. Searched CASE 조건을 직접 명시 CASE WHEN Price > 100 THEN ...

 

 

2. CASE 문 기본 사용 예제

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 값에 따라 각각의 등급(A,B,C,F)으로 변환되어 Grade 컬럼에 표시됩니다.

 

위 예제는 1-2의 문법으로 작성된 예시이며 WHEN 절을 보시면 Score >= 90 처럼 범위 조건이 사용된것을 확인할 수 있습니다.

이런 조건은 1-1의 문법으로는 표현할 수 없는 조건이죠. 

 

그럼 1-1 문법의 예시도 한번 볼까요?

SELECT name
     , age
     , CASE sex_code
           WHEN 'M' THEN '남자'
           WHEN 'W' THEN '여자'
           ELSE ''
       END AS sex_nm
FROM Students;

 

이와 같이 1-1 문법은 비교대상 column(sex_code)를 명시해 놓고 WHEN 절에 비교값(M,W)를 작성해여 해당 값인 경우 표현될 결과값을 THEN 절에 작성합니다. 이 문법은 비교조건을 간략하게 표시하여 보기는 좋지만 범위 비교를 할 수 없다는 치명적인 단점이 있어요.

 

3. 실무 예제: 회원 등급 태그 붙이기

예시 테이블

CREATE TABLE Members ( 
    MemberID INT
  , Name NVARCHAR(50)
  , Point INT 
);

CASE 문 활용

SELECT Name
     , Point
     , CASE 
         WHEN Point >= 1000 THEN 'VIP' 
         WHEN Point >= 500 THEN 'Gold' 
         WHEN Point >= 100 THEN 'Silver' 
         ELSE 'Bronze' 
       END AS MemberLevel 
FROM Members;

✅ 결과: 포인트에 따라 자동으로 등급 태그(VIP, Cold, Silver, Bronze)가 부여됩니다.

 

4. CASE 문은 WHERE나 ORDER BY에서도 가능

WHERE 절에서 사용

SELECT * 
FROM Orders
WHERE 
  CASE 
    WHEN Status = 'Pending' THEN 1
    ELSE 0
  END = 1;

💡 상태가 'Pending'인 주문을 '1'로 바꾸어서 필터 합니다.

ORDER BY 절에서 사용
SELECT ProductName, StockQty
FROM Products
ORDER BY 
  CASE 
    WHEN StockQty = 0 THEN 1
    ELSE 0
  END ASC;

💡 재고가 없는 상품을 먼저 정렬할 수 있습니다.

 

 

📝 마무리 정리

  • CASE 문은 SQL의 조건 분기 로직을 간결하게 표현해주는 강력한 도구입니다.
  • SELECT뿐 아니라 WHERE, ORDER BY 등 다양한 구문에서 유연하게 사용할 수 있습니다.
  • 실무에서는 고객 등급, 상태 분류, 가격 범위 구분 등에 자주 사용됩니다.

2025.06.05 - [MS-SQL] - [MS-SQL] CONVERT 함수 완벽 이해하기 – 실습 예제와 함께 배우는 변환 함수

 

[MS-SQL] CONVERT 함수 완벽 이해하기 – 실습 예제와 함께 배우는 변환 함수

🔍 요약: MS-SQL 형변환 함수인 CONVERT 함수의 개념과 사용방법을 설명하고 실제 예제를 통하여 실습해 봅니다. 실전에서 가장 많이 사용되는 유형에 대해서도 알아봅니다. QUERY를 사용하다 보면

kjh11225it.tistory.com

 

반응형