지금 제가 짜고 있는 프로그램중에
아파트의 임대를 관리하는 프로그램이 있습니다.
이 프로그램에서는 아파트가 임대되지 않고 있는 기간을 산출하여야 하는 요건이 있습니다.
그래서 다음과 유사한 테이블이 있습니다.
SQL> desc 범위테이블
이름 널? 유형
----------------------------------------- -------- ----------------------------
시작일 NOT NULL DATE
종료일 DATE
여기서 시작일은 임대가 시작된 날짜이고요
종료일은 임대가 종료된 날짜입니다.
만약 위와 같은 테이블에 다음과 같은 자료가 있을 경우
SQL> select to_char(시작일,'yyyy-mm-dd') 시작일 , to_char(종료일,'yyyy-mm-dd') from 범위테이블;
시작일 TO_CHAR(종
---------- ----------
2008-01-01 2008-01-28
2008-01-22 2008-02-24
2008-01-31 2008-03-31
2008-04-05 2008-05-06
2008-04-03 2008-06-26
2008-07-21 9999-12-31
6 개의 행이 선택되었습니다.
임대되지 않고 있었던 기간은 2008-04-01 ~ 2008-04-02 까지 와 2008-06-27 ~ 2008-07-20 이 됩니다.
만약 이 아파트가 2001-01-01 에 처음으로 임대를 시작하였다면
실제 임대되지 않은 기간은
2001-01-01 ~ 2007-12-31 과
2008-04-01 ~ 2008-04-02,
2008-06-27 ~ 2008-07-20 의
세 구간이 됩니다.
임대 계약 기간에 따라서 임대되지 않았던 구간은 이보다 더 많아질수도 있고 아예 없을 수도 있습니다.
이럴 경우 임대되지 않고 집이 비어있었던 구간을 구하는 SQL을 알고싶습니다.
고수님들의 많은 조언 부탁드립니다.
(참고로 실제 임대계약이 중복될 수는 없습니다만 기존 테이블의 데이타에 올바르지 않은 자료들이 있어서 임대 기간이 중복되는 자료들도 있어서
위와 같은 예제를 올렸습니다.)
|