SELECT A.* FROM tbl_a A
LEFT JOIN tbl_b B ON A.name=B.name
WHERE A.name='홍길동'
ORDER BY A.date DESC
위의 쿼리에서 '홍길동'에 해당하는 값이 tbl_b에 있는데(unique할때)
tbl_b에 있는 name만큼
tbl_a의 모든 값을 select 하고자 합니다.
도움 부탁드립니다.
감사합니다.
※ 질문 정보가 부족했습니다.
위와 같이 할 경우
홍길동, ...
홍길동, ...
홍길동, ...
차선생, ...
차선생, ...
고길동, ...
고길동, ...
와 같이 출력될 때 원하는 결과는 각 이름의 가장 최근 정보만 하나씩만 나오게 하는 것입니다.
홍길동, ...
차선생, ...
고길동, ...
감사합니다.
with ta as (
select '홍길동' as name , '서울' as addr , 24 as age , sysdate -2 as date1 from dual union all
select '홍길동' as name , '서울' as addr , 24 as age , sysdate -3 as date1 from dual union all
select '차선생' as name , '서울' as addr , 24 as age , sysdate -1 as date1 from dual union all
select '차선생' as name , '서울' as addr , 24 as age , sysdate -4 as date1 from dual union all
select '고길동' as name , '서울' as addr , 24 as age , sysdate -5 as date1 from dual union all
select '고길동' as name , '서울' as addr , 24 as age , sysdate -2 as date1 from dual
) , tb as (
select '홍길동' as name from dual union all
select '차선생' from dual union all
select '고길동' from dual
)
select *
from (
select ta.* , row_number() over ( partition by ta.name order by ta.date1 desc) as rn
from ta inner join tb on ta.name = tb.name
) tt where tt.rn=1