초보라 잘 몰라서 질문 올립니다.
친절한 답변 기다리며서
오늘도 행복한 하루되세요~^^
1) 상황:
그림1처럼 - CUST_TBL, MGR_TBL 두개의 테이블이 있습니다.
CUST_TBL 에는 계좌번호 컬럼이 두개(ACUNT1, ACUNT2) 있고,
MGR_TBL 에는 계좌번호 컬럼이 세개(ACUNT3, ACUNT4, ACUNT5) 있습니다.
2) 질문:
그림3의 계좌번호 데이타와 그림1의 ACUNT1~ACUNT5 컬럼의 데이터 계좌번호를 비교해서,
같은 계좌가 있으면 ACUNT1~ACUNT5 컬럼의 계좌번호앞에 "^^"를 삽입하는 것입니다(그림3 참조).
*ACUNT1~ACUNT5 컬럼의 데이터 계좌번호 뒤에는 한글문자도 포함 된 경우도 있습니다.
*ACUNT1~ACUNT5 컬럼 중에는 NULL도 존재합니다.
*CUST_TBL, MGR_TBL의 데이터는 계속 증가 합니다.
* 토드에서 작업할 예정인데, 완전한 실행 문을 부탁드립니다.
3) 예,
그림3의 ACUNT 컬럼에 있는 "888-888"이 들어 있는 ACUNT1~ACUNT5 컬럼을 비교 했더니
MGR_ID M3,M4,M5의 ACUNT4컬럼에 같은 데이터가 있어서,
M3의 ACUNT4 컬럼의 데이터 "888-888 참고" ---> "^^888-888 참고" 로
M3의 ACUNT4컬럼의 데이타 "888-888" ---> "^^888-888"로
M3의 ACUNT4컬럼의 데이타 "888-888" ---> "^^888-888"로
변환된 예입니다.
WITH cust_tbl AS ( SELECT 'C1' cust_id, '111-111' acunt1, '' acunt2 FROM dual UNION ALL SELECT 'C2', '111-111 사용안함', '555-555' FROM dual UNION ALL SELECT 'C3', '000-000', '' FROM dual UNION ALL SELECT 'C4', '111-222', '' FROM dual UNION ALL SELECT 'C5', '222-222', '' FROM dual ) , mgr_tbl AS ( SELECT 'C1' cust_id, 'M1' mgr_id, '222-222' acunt3, '333-333' acunt4, '' acunt5 FROM dual UNION ALL SELECT 'C1', 'M2', '', '444-444', '' FROM dual UNION ALL SELECT 'C2', 'M1', '666-666 사용안함', '', '' FROM dual UNION ALL SELECT 'C2', 'M2', '777-777', '', '' FROM dual UNION ALL SELECT 'C2', 'M3', '', '888-888 참고', '' FROM dual UNION ALL SELECT 'C2', 'M4', '', '888-888', '999-999' FROM dual UNION ALL SELECT 'C2', 'M5', '', '888-888', '999-999' FROM dual UNION ALL SELECT 'C3', 'M1', '', '', '' FROM dual UNION ALL SELECT 'C3', 'M2', '', '', '' FROM dual UNION ALL SELECT 'C4', 'M1', '111-222', '111-333', '' FROM dual UNION ALL SELECT 'C5', 'M1', '111-444', '', '' FROM dual ) , acunt_tbl AS ( SELECT '888-888' acunt FROM dual UNION ALL SELECT '999-999' FROM dual UNION ALL SELECT '222-222' FROM dual UNION ALL SELECT '111-111' FROM dual UNION ALL SELECT '555-555' FROM dual UNION ALL SELECT '111-999' FROM dual UNION ALL SELECT '111-333' FROM dual ) SELECT c.cust_id , m.mgr_id , NVL2(a1.acunt, '^^', '') || c.acunt1 acunt1 , NVL2(a2.acunt, '^^', '') || c.acunt2 acunt2 , NVL2(a3.acunt, '^^', '') || m.acunt3 acunt3 , NVL2(a4.acunt, '^^', '') || m.acunt4 acunt4 , NVL2(a5.acunt, '^^', '') || m.acunt5 acunt5 FROM cust_tbl c INNER JOIN mgr_tbl m ON c.cust_id = m.cust_id LEFT OUTER JOIN acunt_tbl a1 ON INSTR(c.acunt1, a1.acunt) > 0 LEFT OUTER JOIN acunt_tbl a2 ON INSTR(c.acunt2, a2.acunt) > 0 LEFT OUTER JOIN acunt_tbl a3 ON INSTR(m.acunt3, a3.acunt) > 0 LEFT OUTER JOIN acunt_tbl a4 ON INSTR(m.acunt4, a4.acunt) > 0 LEFT OUTER JOIN acunt_tbl a5 ON INSTR(m.acunt5, a5.acunt) > 0 ;