[SQL] 조건별로 분류하여 주문상태 출력하기

Created by
  • 무둥
Created at
Category
  1. SQL
Status
도움을 받다
FOOD_ORDER 테이블에서 2022년 5월 1일을 기준으로 주문 ID, 제품 ID, 출고일자, 출고여부를 조회하는 SQL문을 작성해주세요. 출고여부는 2022년 5월 1일까지 출고완료로 이 후 날짜는 출고 대기로 미정이면 출고미정으로 출력해주시고, 결과는 주문 ID를 기준으로 오름차순 정렬해주세요.

◇ 내 답변

SELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE, '%Y-%m-%d') AS OUT_DATE, (CASE WHEN DATE_FORMAT(OUT_DATE, '%Y-%m-%d') <= 2022-05-01 THEN '출고완료' WHEN DATE_FORMAT(OUT_DATE, '%Y-%m-%d') > 2022-05-01 THEN '출고대기' ELSE '출고미정' END) AS '출고여부' FROM FOOD_ORDER ORDER BY ORDER_ID ASC;
처음에 이런 식으로 답을 짰는데 출고대기하고 출고미정만 줄창 나오는 거다...

◇ 다른 답변

SELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE, '%Y-%m-%d') AS OUT_DATE, (CASE WHEN DATEDIFF(OUT_DATE, '2022-05-01') > 0 THEN '출고대기' WHEN DATEDIFF(OUT_DATE, '2022-05-01') <= 0 THEN '출고완료' ELSE '출고미정' END) AS '출고여부' FROM FOOD_ORDER ORDER BY ORDER_ID ASC;
다른 사람 코드 참고
이렇게 하니까 됨.
DATEDIFF를 자꾸 잊는다...
그리고 CASE WHEN ELSE END 구문도 본능적으로 거부감이 듦; 왜일까