문제 링크 : https://velog.io/@yooha9621/SQLP실기문제-날짜57번
SELECT P.장비번호 , P.장비명 , A.상태코드 AS 최종상태코드
, A.변경일자 AS 최종변경일자 , A.변경순번 AS 최종변경순번
FROM 장비 P , 상태변경이력 A
WHERE P.장비구분코드 = 'A001'
AND A.장비번호 = P.장비번호
AND (P.변경일자 , P.변경순번) = (
SELECT 변경일자 , 변경순번
FROM (
SELECT 변경일자 , 변경순번
FROM 상태변경이력
WHERE 장비번호 = A.장비번호
ORDER BY 변경일자 DESC , 변경순번 DESC
)
WHERE ROWNUM <=1 )
ORDER BY P.장비번호;
🍎 정리
- 장비구분코드가 'A0001' 인 장비 데이터를 드라이빙 테이블로 놓고 장비번호로 상태변경이력 테이블과 조인하는데 조인하는 데이터의 변경일자와 변경순번이 가장 최근인 1건만 가지고 오기 위해 다중컬럼 비교절을 통해 다시 상태변경이력을 조회하도록 한다.