문제 :
SELECT CAR_ID, CASE WHEN CAR_ID NOT IN
(SELECT CAR_ID FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE '20221016' BETWEEN TO_CHAR(START_DATE, 'YYYYMMDD')
AND TO_CHAR(END_DATE, 'YYYYMMDD')) THEN '대여 가능'
ELSE '대여중'
END AS AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC;
설명 :
원래 했다가 실패한 sql문은 20221016에 집중한 case when 문을 만들었다.
CASE WHEN '20221016'
BETWEEN TO_CHAR(START_DATE, 'YYYYMMDD') AND TO_CHAR(END_DATE, 'YYYYMMDD')) THEN '대여 가능'
ELSE '대여중'
END AS AVAILABILITY
까지 만들었으나. 이 문장을 어떤식으로 바꿔야할지 알지못했음. 이후 서브쿼리를 이용한 방식으로 기간 내에 들어가는 ID가 아닌경우에는 '대여가능' 들어가는 경우에는 '대여중' 으로 표시함. => NOT IN 말고 IN을 써도 가능하다.
서브쿼리를 활용하는 방법을 더욱 시도해보도록 하자.
관련문법 CASE WHEN .. THEN.. ELSE .. END
CASE 컬럼명 | 표현식 WHEN 조건식1 THEN 결과1 WHEN 조건식2 THEN 결과2 WHEN 조건식n THEN 결과n ELSE 결과 END