본문 바로가기
vita_Programing

MSSQL case when then else 문 예제와 활용

by lemonvita 2024. 5. 28.
728x90
반응형

 

 

 

MS-SQL case when then else문 예제와 활용

 

 

ms-sql case문 예제
ms-sql case문 예제

 

728x90

 

더보기

목차

단순 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

  1. 명확하고 구체적인 조건 사용: CASE 문 내에서 사용되는 조건은 명확하고 구체적이어야 합니다.
  2. ELSE 절 사용: 조건에 부합하지 않는 예외상황을 대비하여 가능한 한우 ELSE 절을 포함하여 모든 조건이 처리되도록 합니다.
  3. 복잡한 논리 사용: CASE 문 내에서 논리 연산자 (AND, OR) 및 다른 SQL 함수와 결합하여 복잡한 논리를 구현할 수 있습니다.
  4. 성능 고려: 많은 조건을 포함하고 있다면, CASE 문은 성능에 영향을 미칠 수 있으므로 성능 테스트를 권장합니다.
728x90
반응형