MSSQL CASE WHEN 구문과 사용 예제
MSSQL의 CASE WHEN 구문은 조건에 따라 다른 결과를 반환할 때 사용됩니다. 간단한 로직을 쿼리 안에서 처리하고 싶을 때 유용하게 사용할 수 있습니다.
구문
CASE WHEN 구문의 기본적인 형식은 다음과 같습니다:
CASE
WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
...
ELSE 기본결과
END
조건1부터 차례로 검사하여 첫 번째로 만족하는 조건에 해당하는 결과를 반환합니다. 만약 어떤 조건도 만족하지 않는다면 ELSE 블록의 기본결과를 반환합니다.
예제 1: 직급에 따른 보너스 계산
다음은 직급에 따라 보너스를 계산하는 예제입니다:
SELECT employee_name, position,
CASE
WHEN position = '매니저' THEN salary * 0.2
WHEN position = '주임' THEN salary * 0.1
ELSE salary * 0.05
END AS bonus
FROM employees;
위의 쿼리는 'employees' 테이블에서 직원의 이름, 직급과 보너스를 계산하여 반환합니다. 직급이 '매니저'인 경우 급여의 20%, '주임'인 경우 10%, 그 외의 경우에는 5%의 보너스가 계산되어 보너스 컬럼에 출력됩니다.
예제 2: 주문 상태에 따른 처리
다음은 주문의 상태에 따라 처리 결과를 표시하는 예제입니다:
SELECT order_id, order_status,
CASE
WHEN order_status = '배송중' THEN '배송이 진행 중입니다.'
WHEN order_status = '배송완료' THEN '배송이 완료되었습니다.'
WHEN order_status = '취소' THEN '주문이 취소되었습니다.'
ELSE '알 수 없는 상태입니다.'
END AS status_message
FROM orders;
위의 쿼리는 'orders' 테이블에서 주문의 ID, 상태와 해당 상태에 따른 메시지를 출력합니다. 주문의 상태가 '배송중'이면 '배송이 진행 중입니다.', '배송완료'면 '배송이 완료되었습니다.', '취소'면 '주문이 취소되었습니다.'라는 메시지가, 그 외의 경우에는 '알 수 없는 상태입니다.'라는 메시지가 status_message 컬럼에 표시됩니다.