Home
🌿백업
🍏스터디
🥑소통 창구
Subscribe

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

작성자
  • 무둥
작성시각
카테고리
  1. SQL
상태
도움을 받다
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 구문도 본능적으로 거부감이 듦; 왜일까