sitelink1 | |
---|---|
sitelink2 |
SELECT *
FROM [XXX].[XXX].[XXX] RP
LEFT JOIN (
SELECT *
FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY RP_SEQ ORDER BY RP_SEQ_IN DESC) ROWNUM
FROM [YYY].[YYY].[YYY]
) RPH
WHERE RPH.ROWNUM = 1
) RPH ON RP.RP_SEQ = RPH.RP_SEQ
RP_SEQ로 그룹핑하고 RP_SEQ_IN 에 따라 ROWNUM을 증가시킨다
생성한 목록에서 ROWNUM 이 1인 것들만 추출하면 각 그룹별로 RP_SEQ_IN이 제일 높은것만 추출된다
RP테이블에 RPH 테이블에서 추출한 ROWNUM=1 인 ROW들을 left join 하면
RP테이블 기준으로 RPH테이블에서 동일 RP_SEQ의 가장 최종 row를 오른편에 붙여넣기한 모습이 된다
RP테이블
1,한,a
2,둘,b
3,셋,c
RPH테이블
1,AA
1,BB
1,CC
2,AA
2,BB
식으로 데이터가 있다면
위와 같은 쿼리 결과
1,한,a,AA
2,둘,b,AA
3,셋,c
의 결과로 목록을 만들 수 있다
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
5 | DB 성능 최적화 14가지 지키기 (쿼리 성능 향상) | 황제낙엽 | 2019.05.29 | 280 |
» | 특정 컬럼에 대해 그룹핑하여 각 그룹별 ROWNUM 붙이기 그리고 left join | 황제낙엽 | 2019.05.28 | 182 |
3 | 조회용 검색 쿼리 | 황제낙엽 | 2019.05.28 | 239 |
2 | ROWNUM 붙이기 | 황제낙엽 | 2019.05.28 | 188 |
1 | SELECT 후 다른 Table에 UPDATE 하는 방법 (MSSQL) | 황제낙엽 | 2008.01.28 | 428 |