order by case when 적용시 case별로 정렬조건을 줄 수 있나요?? 0 4 1,885

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 이런식으로 처리하니까 목록표출은 되는데 오름차순, 내림차순 각각 정렬이 안되네요ㅠㅠ

방법이 있을지 도움 부탁드립니다..ㅠㅠ

by 마농 [2023.10.30 16:01:24]

1. DBMS 종류가 뭔가요?
2. 출발일 컬럼의 자료형이 뭔가요?
- 문자형이라면? 저장 포멧은 뭔가요?


by 포병이짱이여 [2023.10.30 17:24:39]

1. TIBERO사용중입니다!
2. 자료형은 문자형이고, 'YYYY-MM-DD'의 형식입니다!


by 마농 [2023.10.30 18:45:47]
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
;

 


by 포병이짱이여 [2023.11.01 13:30:09]

어제 출장 갔다오느라 지금 확인했습니다!

제가 원했던 방법으로 딱 표출되네요.. 이런 식으로도 쓸수 있군요 정말 감사합니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입