SQL/ORACLE함수
MAX() OVER (PARTITION BY ..)
nineDeveloper
2016. 1. 28. 18:16
728x90
반응형
같은 date, 같은 code의 데이터별로 최신 데이터의 행 전체를 취득하고 싶을 경우,
GROUP BY 해서 MAX로 구하면, account와 같은 값들은 취득이 불가능하다.
MAX() OVER (PARTITION BY ..) 절을 쓰면 모든 행을 구할 수 있다.
select *
from(
select code, date, account, upd_date,
max(upd_date) over (partition by code, date) as maxdate from hoge
) t1
where t1.upd_date = t1.maxdate;
code, date로 GROUP BY한 데이터의 upd_date 최대값을 구하고,
기존 데이터의 upd_date와 upd_date 최대값이 같은 데이터를 구하면 된다.
728x90
반응형