2013-04-09 192 views
-1

情况:我得到了2个表格。一个有2个字段的地方StartDate & EndDate。还有一张桌子只有一个场地日期。所以当你在Start-和Enddate之间有3天的时间。他必须在新表格中插入3行。循环中的CTE循环

我有下一个代码,它在表格的可用性中插入完美的我的行。

with View_Solidnet_Training as 
(
select cast('2013-04-09' as datetime) DateValue 
union all 
select DateValue + 1 
from View_Solidnet_Training 
where DateValue + 1 <= cast('2013-04-11' as datetime) 
) 
insert into OBJ_Availability 
select 34, DateValue, 'AM', 2, 'Test' from View_Solidnet_Training; 

但是现在,在他将行插入新表后,他停下来。但是在循环之后,他必须再次在视图中下一行的新值中更改Start和EndDate:View_Solidnet_Training。

那么有没有可能的解决方案,或者我应该做一个新的循环,我检查视图的ID是不是零?

回答

0

正如我理解你的问题,我认为你应该开始从日期进入列表,然后插入。

样品:

create table Dates 
(
startdate datetime, 
endDate datetime 
) 

insert dates 
SELECT '2013-04-06','2013-04-08' 

SELECT * from Dates 

Declare @date int 
Declare @tbl table 
(
date_ datetime 
) 

SELECT @date = datediff(day,startDate-1,EndDate) from Dates 
SELECT @date 

while(@date != 0) 
Begin 

insert into @tbl 
SELECT dateadd(day,@date,StartDate-1) from dates 

set @date = @date -1 

END 

/* 
--TO-DO 
--Update StartDate and EndDate values in table Dates 
-- insert YourTable 
-- select date_ from @tbl 
*/ 
SELECT * from @tbl 
order by date_