안녕하세요~ 두개 코드 종류에 따라 일자별 구간을 모두 구하고 싶은데요 어떻게 해야 할지 감이 안옵니다.
구분 시작일자 종료일자 값
A 20150612 20160608 1.0
A 20160608 20160622 1.3
A 20160622 20160628 1.5
A 20160628 20160701 1.8
A 20160701 20160719 1.6
A 20160719 99991231 1.7
B 20160623 20160628 0.1
B 20160628 20160630 0.2
B 20160630 99991231 0.3
한개 테이블에 구분 값으로 기간별 값이 들어가 있습니다.
A와 B의 시작일자와 종료일자에 서로 겹치는 경우 값을 계산을 하고 싶습니다.
원하는 데이터는 아래 처럼 뷰가 나왔으면 합니다.
구분 시작일자 종료일자 계산값 겹침 A B
A 20150612 20160608 1.0 1.0
A 20160608 20160622 1.3 1.3
A 20160622 20160623 1.5 1.5
A 20160623 20160628 1.4 V 1.5 0.1
A 20160628 20160630 1.6 V 1.8 0.2
A 20160630 20160701 1.5 V 1.5 0.3
A 20160701 20160719 1.3 V 1.6 0.3
A 20160719 99991231 1.4 V 1.7 0.3
고수님들의 도움이 절실히 필요합니다. ㅠㅠ
WITH GUGAN AS
(
SELECT 'A' 구분, '20150612' 시작일자, '20160608' 종료일자, '1.0' 값 FROM DUAL
UNION ALL
SELECT 'A' 구분, '20160608' 시작일자, '20160622' 종료일자, '1.3' 값 FROM DUAL
UNION ALL
SELECT 'A' 구분, '20160622' 시작일자, '20160628' 종료일자, '1.5' 값 FROM DUAL
UNION ALL
SELECT 'A' 구분, '20160628' 시작일자, '20160701' 종료일자, '1.8' 값 FROM DUAL
UNION ALL
SELECT 'A' 구분, '20160701' 시작일자, '20160719' 종료일자, '1.6' 값 FROM DUAL
UNION ALL
SELECT 'A' 구분, '20160719' 시작일자, '99991231' 종료일자, '1.7' 값 FROM DUAL
UNION ALL
SELECT 'B' 구분, '20160623' 시작일자, '20160628' 종료일자, '0.1' 값 FROM DUAL
UNION ALL
SELECT 'B' 구분, '20160628' 시작일자, '20160630' 종료일자, '0.2' 값 FROM DUAL
UNION ALL
SELECT 'B' 구분, '20160630' 시작일자, '99991231' 종료일자, '0.3' 값 FROM DUAL
)
SELECT *
FROM GUGAN; |