카드발급 내역(이력)에서 최종카드(현소지카드)와 최초카드번호를 1ROW로 결과를 표현 하고 싶습니다.
카드발급내역 | ||
발급일자 | 카드번호 | 이전카드번호 |
2015-10-20 | 10001 | |
2018-10-25 | 11001 | 10001 |
2020-09-25 | 12001 | 11001 |
현소지(최종발급)카드번호 | 최초발급카드번호 |
12001 | 10001 |
결과를 WITH recursive로 구현을 하고 싶습니다.또한, 카드발급 내역이 신규 발급,유효기간 도래 재 발급 , 분실, 기타 재발급으로 20회 이상 발급한 case도 있음.
프로시저로 되어있는 프로그램을 SQL로 변경 해 보고 싶습니다. 고수님들의 조언 부탁드립니다.
WITH t AS ( SELECT '2015-10-20' dt, 10001 cd, null pcd FROM dual UNION ALL SELECT '2018-10-25', 11001, 10001 FROM dual UNION ALL SELECT '2020-09-25', 12001, 11001 FROM dual UNION ALL SELECT '2015-10-20', 20001, null FROM dual UNION ALL SELECT '2018-10-25', 21001, 20001 FROM dual UNION ALL SELECT '2020-09-25', 22001, 21001 FROM dual ) SELECT cd , CONNECT_BY_ROOT(cd) root_cd FROM t WHERE CONNECT_BY_ISLEAF = 1 START WITH pcd IS NULL CONNECT BY PRIOR cd = pcd ;