2010-03-22 5 views
2

2 개의 날짜 필드와 식별자 (id, fromdate 및 todate)가 포함 된 테이블이 있습니다.이 날짜는 가능한 모든 방식으로 겹칩니다. 그 목록에있는 개별 세그먼트를 설명하는 시작 날짜와 종료 날짜가있는 세그먼트 목록을 생성해야합니다.날짜 범위를 SQL에서 별도의 세그먼트로 분리

id, FromDate ToDate 
1, 1944-12-11, 1944-12-31 
2, 1945-01-01, 1945-12-31 
3, 1945-01-01, 1945-06-30 
4, 1945-12-31, 1946-05-01 
5, 1944-12-17, 1946-03-30 

모든 중복의 모든 세그먼트 생산해야 : 예를 들어

아마도

1, 1944-12-11, 1944-12-16 
1, 1944-12-17, 1944-12-31 
5, 1944-12-17, 1944-12-31 
2, 1945-01-01, 1945-06-30 
3, 1945-01-01, 1945-06-30 
5, 1945-01-01, 1945-06-30 
2, 1945-07-01, 1945-12-09 
5, 1945-07-01, 1945-12-09 
2, 1945-12-10, 1945-12-31 
4, 1945-12-10, 1945-12-31 
5, 1945-12-10, 1945-12-31 
4, 1946-01-01, 1946-03-30 
5, 1946-01-01, 1946-03-30 
4, 1946-04-01, 1946-05-01 

또는를위한 도면

INPUT 
1 <----> 
2  <-----------> 
3  <-----> 
4     <----------> 
5 <-----------------> 

OUTPUT 
1 <-> 
1 <-> 
5 <-> 
2  <-----> 
3  <-----> 
5  <-----> 
2    <-> 
5    <-> 
2     <-> 
4     <-> 
5     <-> 
4     <-> 
5     <-> 
4      <----> 

이 도와주세요 도움이 될

답변

2

You can use this SO question's answer as a basis.

그것은이 출력으로 분할하지만 난 당신이 필요로 변신 쉽게 생각 :

OUTPUT 
1     <-> 
1,5     <-> 
2,3,5     <-----> 
... 

This link should also prove helpful - 그것은 단지 범위를 구축하는 방법을 보여줍니다.

+0

덕분에 도움이되었습니다. – Richard

+0

아무런 문제가 없습니다. upvotes에 대한 충분한 담당자를 한 번 갖고 싶다면 자유롭게 응답 해주세요. – DVK

관련 문제