DISTINCT를 걸어야하는데 정렬에 필요한 내용이 포함되어 고민이네요 0 6 2,211

by 미르 [SQLServer] [2013.06.10 16:07:34]


 CD NM DT
 '001' 'AA'        '2013-06-04'
 '002' 'BB'        '2013-06-05'
 '003'        'AA'        '2013-06-06'
 '004'        'CC' '2013-06-06'
 '005' 'AA'        '2013-06-07'
 '006' 'DD'        '2013-06-07'
 '007' 'AA' '2013-06-08'
 이런 데이터가 있을 경우, 
 최근의 3개 데이터만 보여주고 싶습니다.
 결과적으로 
 NM
 'AA'
 'DD'
 'CC'
 
 SELECT DISTINCT 하여 중복된 것을 없애고 싶고
 ORDER BY 로 최근 자료만 딱 가져오고 싶은데
 조회된거엔 DT가 필요없다보니... 아 혼란이오네요...
by 채용근 [2013.06.10 16:26:51]

row_number 검색.

by 부쉬맨 [2013.06.10 16:29:48]
with t as
 (
 select '001' "CD",  'AA' "NM",  '2013-06-04' "DT" from dual union all
 select '002',    'BB',    '2013-06-05' from dual union all
 select '003',    'AA',    '2013-06-06' from dual union all
 select '004',    'CC',    '2013-06-06' from dual union all
 select '005',    'AA',    '2013-06-07' from dual union all
 select '006',    'DD',    '2013-06-07' from dual union all
 select '007',    'AA',    '2013-06-08' from dual
 )
select * from
(
 select nm,max(dt), rank() over(order by max(dt) desc) rk 
 from t
 group by nm
) where rk < 4

by 미르 [2013.06.10 16:55:18]
덕분에 참고하여 잘 해결했습니다~ ㅋ 

by 우리집아찌 [2013.06.10 16:45:12]

같은날 중복되면요??

by 미르 [2013.06.10 16:55:52]
RANK() OVER (ORDER BY MAX(DT) DESC, MAX(CD) DESC) 하여 처리하였습니다 ㅋ

by 채용근 [2013.06.10 17:08:41]
같은 날짜의 데이터가 2개 이상있다면 row_number로 변경하세요
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입