MS-SQL case when then else문 예제와 활용
목차
단순 case문의 기본구조
단순 case문 예제
검색 case문의 기본구조
검색 case문 예제
복잡한 조건과 함께 사용하기
Update문에서 사용하기
집계함수와 함께 사용하기
case문의 활용Tip
SQL Server는 데이터베이스 관리 시스템(DBMS) 중 하나로, 다양한 기능을 통해 효율적이고 복잡한 데이터 처리를 가능하게 합니다. 그중에서도 CASE 문은 SQL Server에서 정말 강력한 도구입니다. CASE 문을 사용하면 조건에 따라 서로 다른 값을 반환하거나 다양한 논리를 구현할 수 있어요. 이를 통해 데이터베이스 쿼리를 보다 유연하고 직관적으로 작성할 수 있습니다.
CASE 문은 조건부 논리를 SQL 쿼리 내에 삽입하여, 데이터를 동적으로 처리하고 다양한 상황에 맞춰 원하는 결과를 도출할 수 있게 해 줍니다. 이는 특히 복잡한 조건부 로직이 필요한 보고서 작성, 데이터 분석, 응용 프로그램 개발 등에서 매우 유용합니다. 예를 들어, 특정 열의 값에 따라 다른 결과를 반환하거나, 다양한 조건을 조합하여 데이터를 그룹화하고 집계할 수 있습니다.
SQL Server의 CASE 문은 단순 CASE 문과 검색 CASE 문 두 가지 주요 형태로 나뉩니다. 단순 CASE 문은 특정 열의 값을 기준으로 조건을 평가하고, 검색 CASE 문은 보다 복잡한 조건을 명시적으로 지정하여 평가합니다. 이러한 CASE 문의 유연성 덕분에, 우리는 다양한 시나리오에서 이를 활용하여 복잡한 비즈니스 로직을 SQL 쿼리 내에서 직접 처리할 수 있습니다.
이번 블로그에서는 SQL Server에서 CASE 문을 활용하는 방법에 대해 자세히 알아보겠습니다. 먼저, 단순 CASE 문과 검색 CASE 문의 기본 구문을 살펴보고, 이를 실제 데이터베이스 쿼리에서 어떻게 적용할 수 있는지 다양한 예제를 통해 설명할 것입니다. 또한, CASE 문을 활용하여 데이터를 효율적으로 업데이트하거나 집계하는 방법, 그리고 복잡한 조건부 로직을 구현하는 팁과 주의사항에 대해서도 알아보겠습니다.
단순 case문
단순 case문의 기본 구조
단순 CASE 문은 특정 열의 값을 기준으로 조건을 평가합니다. 다음은 단순 CASE 문의 기본 구문입니다.
CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[ ELSE else_result_expression ]
END
단순 case문 예제
아래는 학생들의 성적에 따라 등급을 매기는 예제입니다.
SELECT
StudentName,
Score,
CASE Score
WHEN 100 THEN 'A+'
WHEN 90 THEN 'A'
WHEN 80 THEN 'B'
WHEN 70 THEN 'C'
WHEN 60 THEN 'D'
ELSE 'F'
END AS Grade
FROM Students;
Score의 값에 따라 다른 등급이 매겨집니다.
검색 case문의 기본 구조
검색 CASE 문은 조건을 직접 지정하여 평가합니다. 다음은 검색 CASE 문의 기본 구문입니다.
CASE
WHEN condition1 THEN result_expression1
WHEN condition2 THEN result_expression2
[ ...n ]
[ ELSE else_result_expression ]
END
검색 case문 예제
아래는 직원들의 월급에 따라 세금률을 계산하는 예제입니다.
SELECT
EmployeeName,
Salary,
CASE
WHEN Salary >= 10000 THEN 'High Tax'
WHEN Salary >= 6000 THEN 'Medium Tax'
WHEN Salary >= 3000 THEN 'Low Tax'
ELSE 'No Tax'
END AS TaxBracket
FROM Employees;
각 직원들의 Salary 값에 따라 다른 세금율 매깁니다.
case문 활용하기
복잡한 조건과 함께 사용하기
아래는 주문 테이블에서 주문 상태에 따라 주문의 처리를 결정하는 예제입니다.
SELECT
OrderID,
CustomerName,
OrderStatus,
CASE
WHEN OrderStatus = 'Pending' THEN 'Process Order'
WHEN OrderStatus = 'Shipped' THEN 'Track Shipment'
WHEN OrderStatus = 'Delivered' THEN 'Send Thank You Email'
ELSE 'Investigate Order'
END AS Action
FROM Orders;
주문의 OrderStatus 값에 따라 다른 처리가 결정됩니다.
Update문에서 사용하기
CASE 문은 UPDATE 문에서도 사용할 수 있습니다. 예를 들어, 특정 조건에 따라 직원의 보너스를 업데이트할 수 있습니다.
UPDATE Employees
SET Bonus = CASE
WHEN PerformanceRating = 'Excellent' THEN Salary * 0.20
WHEN PerformanceRating = 'Good' THEN Salary * 0.10
ELSE Salary * 0.05
END;
각 직원의 PerformanceRating 값에 따라 보너스가 업데이트됩니다.
집계 함수와 함께 사용하기
CASE 문은 집계 함수와 함께 사용되어 특정 조건에 따라 값을 집계할 수 있습니다. 예를 들어, 특정 조건에 따라 판매 금액을 합산할 수 있습니다.
SELECT
SUM(CASE
WHEN Region = 'North' THEN SalesAmount
ELSE 0
END) AS NorthSales,
SUM(CASE
WHEN Region = 'South' THEN SalesAmount
ELSE 0
END) AS SouthSales
FROM Sales;
북부 지역과 남부 지역의 판매 금액을 각각 합산합니다.
Case문의 활용 Tip
- 명확하고 구체적인 조건 사용: CASE 문 내에서 사용되는 조건은 명확하고 구체적이어야 합니다.
- ELSE 절 사용: 조건에 부합하지 않는 예외상황을 대비하여 가능한 한우 ELSE 절을 포함하여 모든 조건이 처리되도록 합니다.
- 복잡한 논리 사용: CASE 문 내에서 논리 연산자 (AND, OR) 및 다른 SQL 함수와 결합하여 복잡한 논리를 구현할 수 있습니다.
- 성능 고려: 많은 조건을 포함하고 있다면, CASE 문은 성능에 영향을 미칠 수 있으므로 성능 테스트를 권장합니다.
'vita_Programing' 카테고리의 다른 글
MSSQL 문자열 자르기 함수 LEFT RIGHT SUBSTRING (2) | 2024.05.30 |
---|---|
Javascript 벽돌깨기 게임 소스 공유 (0) | 2024.05.29 |
Javascript 엘리베이터 동작 시뮬레이션 (0) | 2024.05.28 |
MSSQL 개별 테이블 사용 용량 확인하는 방법 (0) | 2024.05.27 |
javascript/jquery 다중 체크박스 값 가져오기 (0) | 2024.05.27 |