다음은 식품공장의 주문정보를 담은 FOOD_ORDER 테이블입니다. FOOD_ORDER 테이블은 다음과 같으며 ORDER_ID, PRODUCT_ID, AMOUNT, PRODUCE_DATE, IN_DATE,OUT_DATE,FACTORY_ID, WAREHOUSE_ID는 각각 주문 ID, 제품 ID, 주문양, 생산일자, 입고일자, 출고일자, 공장 ID, 창고 ID를 의미합니다.
FOOD_ORDER 테이블에서 5월 1일을 기준으로 주문 ID, 제품 ID, 출고일자, 출고여부를 조회하는 SQL문을 작성해주세요.
출고여부는 5월 1일까지 출고완료로 이 후 날짜는 출고 대기로 미정이면 출고미정으로 출력해주시고, 결과는 주문 ID를 기준으로 오름차순 정렬해주세요.
2. 출고여부라는 컬럼을 만들고, CASE 함수를 이용하여 출고일 조건 따라 출고완료, 출고대기, 출고미정으로 값을 넣어줍니다.
● CASE WHEN DATE_FORMAT(OUT_DATE,'%m-%d') <= '05-01' THEN '출고완료'
DATE_FORMAT을 이용하여 OUT_DATE를 MM-YY로 출력되게 한다음, 05-01을 포함하여 이전이면 출고완료
WHEN DATE_FORMAT(OUT_DATE,'%m-%d') > '05-01' THEN '출고대기'
05-01 이후이면 출고대기
ELSE '출고미정'
그 외의 값이면 출고미정으로 표시합니다. (WHEN OUT_DATE IS NULL THEN '출고미정' <<< 이렇게도 가능)
END AS '출고여부' CASE문을 종료하고 출고여부로 컬럼명을 지정합니다.
※ CASE WHEN 조건 THEN 조건에 따른 값
ELSE 조건에 해당하지 않는 값
END
조건에 해당하면 THEN 이후 값이 나오고, 조건에 해당하지 않으면 ELSE 이후의 값이 반환됩니다.
그리고 CASE를 종료하기 위해 END로 마무리합니다.
3. FOOD_ORDER 테이블에서 값을 가져옵니다.
● FROM FOOD_ORDER
4. 주문번호 오름차순으로 정렬합니다.
● ORDER BY ORDER_ID ASC;
4) 코드
SELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE, '%Y-%m-%d'),
CASE WHEN DATE_FORMAT(OUT_DATE,'%m-%d') <= '05-01' THEN '출고완료'
WHEN DATE_FORMAT(OUT_DATE,'%m-%d') > '05-01' THEN '출고대기'
ELSE '출고미정'
END AS '출고여부'
FROM FOOD_ORDER
ORDER BY ORDER_ID ASC;