SQL Case

2023. 4. 9. 10:15·📦 Database/SQL

💡 Case

Case When 형식으로 When과 같이 자주 쓰이며 프로그래밍의 if - else 문과 비슷하다.

When의 평가식은 '필드 = 값' 처럼 조건을 지정하는 식을 말한다.

처리 순서는 처음에 있는 When의 평가식부터 평가되고,
조건이 맞으면 Then 에 지정된 식이 리턴되며 Case식 전체가 종료된다.

만약 조건이 맞지 않으면 다음 When 으로 이동해 같은 처리를 반복한다.


기본 형식

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    WHEN conditionN THEN resultN
    ELSE result
END;

예시

OrderDetails 테이블의 OrderId와 Quantity를 돌면서 조건에 만족하면 End As 에 Then의 문구를 담아서 반환한다.

SELECT OrderID, Quantity,
CASE
    WHEN Quantity > 30 THEN 'The Quantity is Greager Than 30'
    WHEN Quantiry = 30 THEN 'The Quantity is 30'
    ELSE 'The Quantity is Under 30'
END AS QuantityText
FROM OrderDetails;

결과

OrderID Quantity QuantityText
10248 12 The quantity is under 30
10248 10 The quantity is under 30
10248 5 The quantity is under 30
10249 9 The quantity is under 30
10249 40 The quantity is greater than 30
10250 10 The quantity is under 30
10250 35 The quantity is greater than 30
10250 15 The quantity is under 30

고객을 도시별로 주문하며, 도시가 Null이면 국가별로 주문한다.

SELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
    WHEN City IS NULL THEN Country
    ELSE City
END);
저작자표시 (새창열림)

'📦 Database > SQL' 카테고리의 다른 글

SQL Operator  (0) 2023.04.09
SQL Null Function  (0) 2023.04.09
SQL Select Into & Insert Into Select  (0) 2023.04.09
SQL Any & All  (0) 2023.04.08
SQL Exists  (0) 2023.04.08
'📦 Database/SQL' 카테고리의 다른 글
  • SQL Operator
  • SQL Null Function
  • SQL Select Into & Insert Into Select
  • SQL Any & All
신건우
신건우
조용한 개발자
  • 신건우
    우주먼지
    신건우
  • 전체
    오늘
    어제
    • 분류 전체보기 (422)
      • 📘 Frontend (71)
        • Markup (1)
        • Style Sheet (2)
        • Dart (8)
        • Javascript (12)
        • TypeScript (1)
        • Vue (36)
        • React (2)
        • Flutter (9)
      • 📘 Backend (143)
        • Java (34)
        • Concurrency (19)
        • Reflection (1)
        • Kotlin (29)
        • Python (1)
        • Spring (42)
        • Spring Cloud (5)
        • Message Broker (5)
        • Streaming (2)
        • 기능 개발 (5)
      • 💻 Server (6)
        • Linux (6)
      • ❌ Error Handling (11)
      • 📦 Database (62)
        • SQL (31)
        • NoSQL (2)
        • JPQL (9)
        • QueryDSL (12)
        • Basic (4)
        • Firebase (4)
      • ⚙️ Ops (57)
        • CS (6)
        • AWS (9)
        • Docker (8)
        • Kubernetes (13)
        • MSA (1)
        • CI & CD (20)
      • 📚 Data Architect (48)
        • Data Structure (10)
        • Algorithm (8)
        • Programmers (17)
        • BaekJoon (5)
        • CodeUp (4)
        • Design Pattern (4)
        • AI (0)
      • ⚒️ Management & Tool (8)
        • Git (7)
        • IntelliJ (1)
      • 📄 Document (10)
        • Project 설계 (6)
        • Server Migration (3)
      • 📄 책읽기 (2)
        • 시작하세요! 도커 & 쿠버네티스 (2)
      • 🎮 Game (4)
        • Stardew Vally (1)
        • Path of Exile (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      React #Markdown
      GStreamer #Pipeline
      Lock #Thread #Concurrency
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    신건우
    SQL Case
    상단으로

    티스토리툴바