DB/SQL

[Oracle] CASE 표현식

lavender1122 2024. 9. 9. 11:13

 

CASE 표현식의 기본구성

SELECT CASE WHEN 조건1 THEN 출력1
			WHEN 조건2 THEN 출력2
            ...
            ELSE 그외
            END
FROM 테이블명
;

예시

예시1. 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(컬럼명 : RENT_TYPE)을 추가하여 대여기록을 출력하는 SQL문 작성해주세요

SELECT CASE WHEN END_DATE-START_DATE>=29 THEN '장기 대여'
        ELSE '단기 대여' 
        END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY 
;

SELECT CASE WHEN B.DURATION < 7 THEN ''
            ELSE CASE WHEN B.DURATION < 30 THEN '7일 이상'
            ELSE CASE WHEN B.DURATION < 90 THEN '30일 이상'
            ELSE '90일 이상'
            END END END AS DURATION_TYPE
  FROM CAR_RENTAL_COMPANY_CAR A
     INNER JOIN (
              SELECT HISTORY_ID
                         , CAR_ID
                         , END_DATE - START_DATE + 1 AS duration
              FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY) B
     ON A.CAR_ID = B.CAR_ID
 WHERE A.CAR_TYPE = '트럭'​
출처
https://m.blog.naver.com/regenesis90/222182250665