2014-04-02 4 views
0

실행 날짜 목록을 작성하여 위에있는 날짜까지 6 주를 더하고 싶습니다. 지금까지 제 코드는 저에게 시작일과 종료일을 알려줍니다. 나는 시작과 끝 사이에 6 개 주 간격을 표시해야하는 것은이 ENDDATE 전에 마지막 날짜에 도달 할 때까지SQL SERVER에서 누적 합계를 얻으십시오

aLearnerRef  startdate  enddate  reviewdate 
------------------------------------------------------ 
399750423600 2013-11-27 2014-06-12 2014-01-08 
399750423600 2013-11-27 2014-06-12 2014-02-19 
399750423600 2013-11-27 2014-06-12 2014-04-02 
399750423600 2013-11-27 2014-06-12 2014-05-14 

내가 루프에 원하는 날짜. 나는 이것을 할 수있는 방법을 찾지 못한다.

SELECT a.aLearnerRef, x.startdate, x.enddate 
FROM aims a 
inner join vStudyP s 
on s.LearnerRef = a.aLearnerRef 
join (SELECT aLearnerRef, min(learnstartdate) startdate, max(learnplannedenddate) enddate 
     FROM aims 
     GROUP BY aLearnerRef) x 
on a.aLearnerRef = x.aLearnerRef 
group by a.aLearnerRef, x.startdate, x.enddate 
+0

재귀 CTE가 유용하다고 생각합니다. 일부 코드 및 공유를 시도합니다. – AK47

답변

1

이 코드를 시도

with cte as 
(
select ak.akid,sdate,edate,DATEADD(WEEK,6,sdate) rdate from ak 
Union All 

select ak.akid,ak.sdate,ak.edate,DATEADD(WEEK,6,rdate) rdate from ak 
inner join cte on rdate between ak.sdate and ak.edate 
where DATEADD(WEEK,6,rdate) between ak.sdate and ak.edate 


) 
select * from CTE 

만약 하나 개 이상의 기록, 데모

with cte as 
    (
    select ak.akid,sdate,edate,DATEADD(WEEK,6,sdate) rdate from ak 
    Union All 

    select ak.akid,ak.sdate,ak.edate,DATEADD(WEEK,6,rdate) rdate from ak 
    inner join cte on rdate between ak.sdate and ak.edate 
    where DATEADD(WEEK,6,rdate) between ak.sdate and ak.edate 
      and cte.akid = ak.akid 

    ) 
    select * from CTE 

링크, http://sqlfiddle.com/#!3/31d30/5

+0

감사합니다. ak에 레코드가 두 개 이상 있다면 어떨까요? – Marshall10001

+0

그래서 각자 똑같은 태도를 취하고 싶습니까? 하나의 레코드에 대해서만이 것을 원한다면 select 문에서 where 절을 적용 할 수 있습니다. 따라서 귀하의 요구 사항에 따라 다릅니다. – AK47

+0

나는 그것이 하나 이상의 기록에도 적용될 것이라고 생각한다. 두 번째 옵션을 편집하고 두 번째 옵션을 편집합니다. 단 하나 더 추가하면됩니다. 당신이 ans에 만족한다면. ans에 표시하십시오. 유용하다. – AK47

0

사용 : 여기에 지금까지 가지고있는 코드입니다 보조 숫자 표 :

SELECT a.aLearnerRef, dateadd(day,n,a.startdate), a.enddate 
FROM aims a 
inner join numbers num 
on n < datediff(day,startdate, enddate) 
관련 문제