코딩

All
JavaScript
SQL
JAVA
[JAVA] ad 제거하기
  1. JAVA
도움을 받다
[JAVA] 가장 큰 수 찾기
  1. JAVA
도움을 받다
[JAVA] 더 크게 합치기
  1. JAVA
도움을 받다
[JAVA] 배열 뒤집기
  1. JAVA
도움을 받다
[JAVA] 배열의 유사도
  1. JAVA
도움을 받다
[JAVA] 편지
  1. JAVA
해결
[개념] JAVA1
  1. JAVA
기타
[JS] 카펫
  1. JavaScript
해결
[JS] 짝지어 제거하기
  1. JavaScript
도움을 받다
[JS] 콜라 문제
  1. JavaScript
해결

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