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

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

[https://school.programmers.co.kr/learn/courses/30/lessons/131113#qna](https://school.programmers.co.kr/learn/courses/30/lessons/131113#qna)

---

### ◇ 내 답변

```
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 구문도 본능적으로 거부감이 듦; 왜일까

For the site tree, see the [root Markdown](https://slashpage.com/%EB%AC%B4%EB%91%A5-rypb2.md).
