안녕하세요.
도움이 절실하여 조언을 구하고자 글을 올립니다.
1번 SQL에서 수행한 정지기간 시작일자 / 종료일자 / 시작~종료일수 정보 입니다.
(해당 SQL 내에서 시작일자와 종료일자가 중복 발생 X : 20150601~02 / 20150602~12 이렇게 02일이 중복될 수 없음)
EX) 시작일자 종료일자 GAP(=종료일자-시작일자+1)
20150601 20150602 2
20150612 20150615 4
2번 SQL에서 수행한 무료기간 시작일자 / 종료일자 정보입니다.
(해당 SQL 내에서 시작일자와 종료일자가 중복 발생 X : 20150601~02 / 20150602~12 이렇게 02일이 중복될 수 없음)
EX) 시작일자 종료일자
20150601 20150610
20150612 20150614
20150617 20150620
20150621 20150625
이런 조건하에 정지기간과 무료기간 간에 겹치는 일자를 제외하여
총 정지기간+무료기간 일수를 구해야 됩니다.
단건 수행하는 것이 아닌 각각의 고객에 대해 일자계산이 되어야 되는 부분이기에
함수를 사용할 경우 수행 속도에 영향이 있지 않을까 생각됩니다. (함수 구현도 막막하지만;;;)
제가 생각한 방식은
1. 배열을 이용해서 중복되는 일자를 제외하고 배열 카운트 = 오라클에 배열이 없는데...
2. 오라클 함수 생성하여 함수내에서 CONNECT BY LEVEL을 사용하여 일자를 나열한 후 UNION / DISTINCT 하여 카운트....
= ROW가 유동적이라 다이나믹SQL로 구현할 실력이 안됨 / 다건 수행 시 수행 속도가 엄청 날 것으로 예상
1번도 2번도 제 실력으로는 아직 구현이 불가능합니다.
많은 고수님들 부디 조언과 답변을 아끼지 말아주세요. 도와주십시오. 감사합니다. |