create table 월도(기준월, 시작일자, 종료일자)
as
select '200906', '20090601', '20090630' from dual union all
select '200907', '20090701', '20090731' from dual union all
select '200908', '20090801', '20090831' from dual union all
select '200909', '20090901', '20090930' from dual union all
select '200910', '20091001', '20091030' from dual
;
create table 선분이력 (상품번호, 시작일자, 종료일자, 데이터)
as
select 'a', '20090713', '20090808', 'a1' from dual union all
select 'a', '20090809', '20090820', 'a2' from dual union all
select 'a', '20090821', '20091007', 'a3' from dual
;
select a.기준월, b.시작일자, b.종료일자, b.상품번호, b.데이터
from 월도 a, 선분이력 b
where b.시작일자 <= a.종료일자
and b.종료일자 >= a.시작일자
order by a.기준월, b.시작일자
;
기준월 시작일자 종료일자 상품번호 데이터
------------ ---------------- --------- --------- ----
200907 20090713 20090808 A A1 ----- 5 -> 8
200908 20090713 20090808 A A1 ----- 5 -> 9
200908 20090809 20090820 A A2 ----- 6 -> 10
200908 20090821 20091007 A A3 ----- 7 -> 11
200909 20090821 20091007 A A3 ----- 7 -> 12
200910 20090821 20091007 A A3 ----- 7 -> 13
SELECT 상품번호
,case when lst = 시작일자1 and gst = 종료일자2 then 시작일자2 -- 스타일a
when lst = 시작일자2 and gst = 종료일자1 then 시작일자1 -- 스타일b
when lst = 시작일자1 and gst = 종료일자1 then 시작일자2 -- 스타일c
when lst = 시작일자2 and gst = 종료일자2 then 시작일자2 -- 스타일d
end 시작일자
,case when lst = 시작일자1 and gst = 종료일자2 then 종료일자2 -- 스타일a
when lst = 시작일자2 and gst = 종료일자1 then 종료일자1 -- 스타일b
when lst = 시작일자1 and gst = 종료일자1 then 종료일자2 -- 스타일c
when lst = 시작일자2 and gst = 종료일자2 then 종료일자2 -- 스타일d
end 종료일자
,데이터
FROM (
SELECT b.상품번호,b.데이터,a.기준월
,a.시작일자 시작일자1,b.시작일자 시작일자2
,a.종료일자 종료일자1,b.종료일자 종료일자2
,least(a.시작일자,a.종료일자,b.시작일자,b.종료일자) lst
,greatest(a.시작일자,a.종료일자,b.시작일자,b.종료일자) gst
FROM 월도 a, 선분이력 b
WHERE b.시작일자 <= a.종료일자
AND b.종료일자 >= a.시작일자
)
;
상품번호 시작일자 종료일자 데이터
--------- ---------- -------------- ----------
A 2009/07/13 2009/07/31 A1
A 2009/08/01 2009/08/08 A1
A 2009/08/09 2009/08/20 A2
A 2009/08/21 2009/08/31 A3
A 2009/09/01 2009/09/30 A3
A 2009/10/01 2009/10/07 A3
- 강좌 URL : http://www.gurubee.net/lecture/4432
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.