반응형
Microsoft SQL Server(MSSQL)의 CASE 문은 조건에 따라 다른 값을 반환하는 데 사용됩니다. 이는 프로그래밍 언어의 if-then-else 구문과 유사한 기능을 SQL에서 구현하는 방법입니다.
CASE 문의 기본 문법
CASE 문은 크게 두 가지 형태로 사용됩니다.
1. 간단한 CASE 표현식 (Simple CASE Expression)
이 형식은 하나의 열(column) 값을 여러 조건과 비교할 때 사용됩니다.
CASE input_expression
WHEN when_expression1 THEN result_expression1
WHEN when_expression2 THEN result_expression2
...
[ELSE else_result_expression]
END
- input_expression: 비교 대상이 되는 열 또는 값.
- WHEN when_expression: input_expression과 비교할 값.
- THEN result_expression: input_expression이 when_expression과 일치할 때 반환할 값.
- ELSE: 어떤 WHEN 조건도 일치하지 않을 때 반환할 기본 값. ELSE는 선택 사항입니다. ELSE를 생략하면, 일치하는 조건이 없을 경우 NULL을 반환합니다.
예시
SELECT
product_name,
product_category,
CASE product_category
WHEN 'Electronics' THEN '전자제품'
WHEN 'Apparel' THEN '의류'
WHEN 'Books' THEN '도서'
ELSE '기타'
END AS category_korean
FROM
products;
2. 검색된 CASE 표현식 (Searched CASE Expression)
이 형식은 각각의 WHEN 절에 다른 조건식을 사용할 때 유용합니다. 복잡한 논리나 여러 열에 대한 조건을 적용할 때 주로 사용됩니다.
CASE
WHEN boolean_expression1 THEN result_expression1
WHEN boolean_expression2 THEN result_expression2
...
[ELSE else_result_expression]
END
- WHEN boolean_expression: 참/거짓을 반환하는 조건식.
- THEN result_expression: 조건식이 TRUE일 때 반환할 값.
- ELSE: 어떤 WHEN 조건도 TRUE가 아닐 때 반환할 기본 값.
예시
SELECT
employee_name,
salary,
CASE
WHEN salary >= 100000 THEN '고액 연봉자'
WHEN salary >= 50000 THEN '중간 연봉자'
ELSE '초급 연봉자'
END AS salary_level
FROM
employees;
CASE 문의 활용
CASE 문은 단순히 값을 반환하는 것을 넘어 다양한 SQL 구문에서 활용될 수 있습니다.
- ORDER BY 절: 정렬 순서를 동적으로 변경할 때.
ORDER BY
CASE @sort_option
WHEN 'name' THEN employee_name
WHEN 'salary' THEN salary
ELSE employee_id
END;
- GROUP BY 절: 특정 조건에 따라 데이터를 그룹화할 때.
- UPDATE 문: 조건에 따라 다른 값으로 데이터를 갱신할 때.
- SUM, COUNT 등의 집계 함수: 조건부 합계나 개수를 구할 때. 예를 들어, COUNT(CASE WHEN ... END)는 특정 조건을 만족하는 행의 개수를 셉니다.
예시: 조건부 집계
SELECT
SUM(CASE WHEN status = 'Completed' THEN amount ELSE 0 END) AS completed_sales,
SUM(CASE WHEN status = 'Pending' THEN amount ELSE 0 END) AS pending_sales
FROM
orders;반응형
'db > mssql' 카테고리의 다른 글
| mssql 스키마 용량 조회 (0) | 2025.04.14 |
|---|---|
| mssql 테이블 사용 용량 조회 (0) | 2025.04.14 |
| mssql exec sp_spaceused table (0) | 2025.04.13 |
| mssql 기본 키 없는 테이블 조회 (0) | 2025.04.13 |
| mssql sys.tables (0) | 2025.04.13 |