안녕하세요.
SQL 도움을 얻고자 질문 남깁니다.
[입력데이터]
FR_DT, TO_DT
20120101, 20181231
20130401, 20160531
20140701, 20181231
20120101, 20170630
[결과데이터]
RN, ST_DT, ED_DT
1, 20170101, 20130331
2, 20130401, 20130521
3, 20130522, 20140630
4, 20140701, 20160531
5, 20160601, 20170630
6, 20170701, 20181231
[조건]
1. 입력데이터는 FROM~TO로 자유롭게 입력합니다.
- 날짜는 중간에 끊김없이 입력됩니다.
2. 결과데이터와 같이 중복구간 없이 날짜가 분할되어야합니다.
3. 날짜구간안에 20130521일 있으면 분할되어야합니다.
- 20130521도 시작일 또는 종료일에 입력할 수 있습니다.
[샘플]
WITH TMP_DT_LIST(FR_DT, TO_DT) AS (
SELECT '20120101', '20181231' FROM DUAL UNION ALL
SELECT '20130401', '20160531' FROM DUAL UNION ALL
SELECT '20140701', '20181231' FROM DUAL UNION ALL
SELECT '20120101', '20170630' FROM DUAL
)
SELECT *
FROM TMP_DT_LIST
;
|