A 테이블 - ID, 제품
B테이블 - ID, 버전, 등록일
원하는 쿼리는
A테이블기준으로 B테이블에 동일한 ID가 있으면 같이 가져와서 조회되게 하는데(아웃터조인)
B테이블에 동일한 ID가 여러개 있으면 등록일이 가장 최근것의 버전을 보여줘야 합니다
예) A 테이블 B 테이블
1 TV 1 A버전 20140501
1 B버전 20151031
결과
1 TV B버전 20151031
부탁드립니다
참고만 하세요..
오라클을 써본적이 없어 구문이 조금 다를수도 있을듯하나
큰 차이는 없을듯하네요..
---쿼리시작---
with tblA (id,제품) As ( Select '1','TV' ) ,tblB (id,버전,등록일) As ( Select '1','A버전','20140501' Union All Select '1','B버전','20151031' ) Select a.id ,a.제품 ,b.버전 ,b.등록일 From tblA a Left Outer Join tblB b On a.id = b.id And b.등록일 = ( Select Top 1 c.등록일 From tblB c Where b.id = c.id Order By c.등록일 Desc ) ---쿼리끝---
---결과---
SELECT * FROM (SELECT a.id , a.제품 , b.버전 , b.등록일 , ROW_NUMBER() OVER(PARTITION BY a.id ORDER BY b.등록일 DESC) rn FROM tblA a LEFT OUTER JOIN tblB b ON a.id = b.id ) WHERE rn = 1 ;
감사합니다
원하는 답을 얻었습니다
SELECT * FROM a, b WHERE a.id = b.id(+) AND NOT EXISTS (SELECT 1 FROM b q WHERE q.id = b.id AND q.등록일 > b.등록일);