by 포병이짱이여 [2023.10.30 15:42:07]
START_YMD(출발일) 이라는 컬럼이 있는데,
오늘날짜기준 출발일에 가까운 목록을 먼저 표출하고(신청가능목록), 그 이후에 나머지 목록(신청불가능목록)을 표출해야 합니다.
그런데, 신청가능목록은 오늘날짜와 가까운 출발일로 표출해야하고(오름차순), 신청불가능목록은 내림차순으로 표출해야 합니다.
예를들어, 오늘 날짜가 10/30이면 신청가능 목록이 10/31, 11/1, 11/2.... 이렇게이며
신청불가능 목록은 10/30, 10/29, 10/28... 이렇게 표출되어야 합니다.
CASE WHEN 1 ELSE 2 이런식으로 처리하니까 목록표출은 되는데 오름차순, 내림차순 각각 정렬이 안되네요ㅠㅠ
방법이 있을지 도움 부탁드립니다..ㅠㅠ
1. DBMS 종류가 뭔가요?
2. 출발일 컬럼의 자료형이 뭔가요?
- 문자형이라면? 저장 포멧은 뭔가요?
1. TIBERO사용중입니다!
2. 자료형은 문자형이고, 'YYYY-MM-DD'의 형식입니다!
WITH t AS
(
SELECT '2023-10-28' start_ymd FROM dual
UNION ALL SELECT '2023-10-29' FROM dual
UNION ALL SELECT '2023-10-30' FROM dual
UNION ALL SELECT '2023-11-01' FROM dual
UNION ALL SELECT '2023-11-02' FROM dual
UNION ALL SELECT '2023-11-03' FROM dual
)
SELECT start_ymd
FROM t
ORDER BY CASE WHEN start_ymd > TO_CHAR(sysdate, 'yyyy-mm-dd') THEN start_ymd END ASC
, CASE WHEN start_ymd <= TO_CHAR(sysdate, 'yyyy-mm-dd') THEN start_ymd END DESC
;
어제 출장 갔다오느라 지금 확인했습니다!
제가 원했던 방법으로 딱 표출되네요.. 이런 식으로도 쓸수 있군요 정말 감사합니다!