select *
from
(select a
, b
, row_number() over(partition by pk1, pk2 order by date) rnum
from tab) a
where rnum = 1
위와 같은 쿼리가 있다고 가정했을 때 rnum = 1 이라는 조건에 의해서 파티션된 데이터 중 date가 가장 빠른 날짜의 데이터를 가져오게 될텐데요...
inline view 내의 결과에서 a 와 b라는 컬럼의 값이 각각 파티션 내에서 모두 동일하면 0, 하나라도 다른게 있으면 1 이라는 값을 리턴하게 하려면 어떻게 하면 될까요?
예를 들어 inline view 내의 결과가 아래와 같다고 하면
rnum a b
1 1 1
2 1 2
0 1
최상위 select 절에서는 rnum = 1 인 값만 가져오지만 a는 0, b는 1 이런 결과를 가져오게 하는 겁니다. |