본문 바로가기
프로그래머스/SQL

[프로그래머스] 조건별로 분류하여 주문상태 출력하기.oracle (날짜 & CASE WHEN)

by 몰라닉네임 2022. 10. 11.

[프로그래머스] 조건별로 분류하여 주문상태 출력하기.oracle 

LV3 

 

 

IDEA 날짜형식으로 case when 출고일자 5월 1일 이전 이면(<=0501) 출고완료 , 이후이면(>0501) 출고대기, NULL (ELSE)이면 출고미정 

 

* ALIAS 한글 지정은 (" ")큰 따옴표!

 

정답 코드

SELECT ORDER_ID, PRODUCT_ID, TO_CHAR(OUT_DATE, 'YYYY-MM-DD') AS OUT_DATE, 
CASE WHEN TO_CHAR(OUT_DATE, 'YYYY-MM-DD') <= TO_CHAR('2022-05-01') THEN '출고완료'
WHEN TO_CHAR(OUT_DATE, 'YYYY-MM-DD') > TO_CHAR('2022-05-01') THEN '출고대기'
ELSE '출고미정' END AS "출고여부"
FROM FOOD_ORDER 
ORDER BY ORDER_ID ;

.

정답 코드 실행 결과

 

오류 났었던 부분 

오류 코드

설명: OUT_DATE 칼럼의 값들을 보면 시간까지 출력된다. (아래. 오류 코드 실행 결과 노란색 형광 부분 참고)

그래서 오답이다.

이를 해결하기 위해서 SELECT 부분에서도 형 변환을 ' TO_CHAR(OUT_DATE, 'YYYY-DD-MM') AS OUT_DATE ' 이런 식으로 문제에서 요구하는 형태로 변환해줘야 문제에서 요구하는 실행결과를 얻을 수 있다. 

 

SELECT ORDER_ID, PRODUCT_ID, OUT_DATE , 
CASE WHEN TO_CHAR(OUT_DATE, 'YYYY-MM-DD') <= TO_CHAR('2022-05-01') THEN '출고완료'
WHEN TO_CHAR(OUT_DATE, 'YYYY-MM-DD') > TO_CHAR('2022-05-01') THEN '출고대기'
ELSE '출고미정' END AS "출고여부"
FROM FOOD_ORDER 
ORDER BY ORDER_ID ;

.

오류 코드 실행 결과

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/131113

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr