select distinct field1
from tb_test
이렇게 하면 field1에 있는 데이터 중 중복을 제거하고 유니크 한 값들만 나온다.
그러나 시간 개념이 들어가서 최신의 데이터에 해당하는 row의 값을 다 가져 오고 싶다면?
distinct에 시간까지 걸면 모든 데이터가 다 유니크 해버린다.
oracle db 데이터 중 특정 필드의 중복을 제거하고 최신의 데이터 1개만 가져오기.
숨어 있던 rowid가 이때 도움을 준다.
select *
from tb_test
where rowid in (select max(rowid) from tb_test where reg_tm between start_tm and end_tm group by field1)
[출처] http://kyang2.pe.kr/30039201009
'DataBase > Sql' 카테고리의 다른 글
[Sql] Oracle - Function 사용하기 (0) | 2010.11.16 |
---|---|
[Sql] Oracle - Sequence 사용하기 (0) | 2010.11.10 |
[Sql] Oracle - Column의 comment 확인 (0) | 2010.09.10 |
[Sql] DB2 - 해당 년월일의 일 수 구하기 (0) | 2010.09.10 |
[Sql] Mysql - Rownum 사용하여 건수 조절 (0) | 2010.08.24 |