티베로에 keep 함수 못쓰나요? 그룹중에 최신일자가 있으면 소트시 그 그룹이 맨앞으로오게 0 2 1,208

by 스파르타 [SQL Query] [2020.11.05 17:00:45]


WITH t AS

(

SELECT 1 GRP, '101' id,       '20201102110757' DT FROM dual

UNION ALL SELECT 1, '102', '20201104110750' FROM dual

UNION ALL SELECT 2, '201', '20201103110757' FROM dual

UNION ALL SELECT 3, '301', '20201101110757' FROM dual

UNION ALL SELECT 3, '302', '20201105110757' FROM dual

UNION ALL SELECT 4, '401', '20201104110757' FROM dual

UNION ALL SELECT 4, '402', '20201104110758' FROM dual

UNION ALL SELECT 4, '403', '20201102110757' FROM dual

)

그룹중에 최신일자가 있으면 소트시 그 그룹이 맨앞으로오게 가능할까요..

ROW_NUMBER  ...  RANK 등 함수써봐도 도통 모르겠어여..

그래서 KEEP 함수가 가능할까 해서 해봤는데 안되는거 같아서...

 

원하는 결과는 아래처럼 소트됬음합니다.

GRP 이 같은놈중 일자가 최신인게 하나라도 있으면 GRP 전체를 위로 올리는건데요... 싶지않네요..

 

GRP         ID            DT

------------------------------------------------------

3          301             20201101110757

3          302             20201105110757

4          401             20201104110758

4          402             20201104110757

4          403             20201102110757

1          101             20201102110757

1          102             20201104110750

2          201             20201103110757

 

 

 

by 마농 [2020.11.05 17:31:22]
SELECT *
  FROM t
 ORDER BY MAX(dt) OVER(PARTITION BY grp) DESC, grp, id
;

 


by 스파르타 [2020.11.06 11:09:59]

아... 왜저는 저생각이 안날까여...

마농님 항상 고맙습니다.~

 

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