문제 링크 : https://velog.io/@yooha9621/SQLP실기문제-파티셔닝25번
SQL > SELECT *
FROM (
SELECT 고객번호 , MAX(변경일자) 변경일자 , MAX(변경구분코드)
, KEEP (DENSE_RANK LAST ORDER BY 변경일자, 변경일련번호) 변경구분코드
FROM 고객변경이력 CH
WHERE EXISTS (
SELECT 'X'
FROM 고객 C
WHERE 고객번호 = CH.고객번호
AND 상태변경일자 〈= CH.변경일자
AND 고객상태코드 = 'AI' )
GROUP BY 고객번호
)
WHERE 변경일자 =: CHG_DT
AND 변경구분코드 = 'D1';
SQL > SELECT *
FROM (
SELECT 고객번호 , MAX(변경일자) 변경일자 , MAX(변경구분코드)
, KEEP (DENSE_RANK LAST ORDER BY 변경일자, 변경일련번호) 변경구분코드
FROM 고객변경이력 CH
WHERE EXISTS (
SELECT 'X'
FROM 고객 C
WHERE 고객번호 = CH.고객번호
AND 상태변경일자 〈= CH.변경일자
AND 고객상태코드 = 'AI' )
AND CH.변경일자 >= :CHG_DT
GROUP BY 고객번호
)
WHERE 변경일자 =: CHG_DT
AND 변경구분코드 = 'D1';
🍎 정리
- '변경일자' 조회 조건을 인라인뷰 안에다가 추가해 해당되는 파티션만 읽을 수 있게 한다.
👀 헷갈렸던 점
- '변경일자' 조회 조건으로 파티션 테이블 조회를 하려면 조회될 데이터의 '변경일자'의 해당 월을 얼만큼 조회할지 정해야하는데 이 부분에서 정확한 해답이 바로 떠오르지 않았다.
💡해답 : '최종 변경 일자'가 CHG_DT인 데이터를 조회하는 것이므로 어쨌든 변경일자가 CHG_DT보다 최근이면 된다.