-1

情况:我有2张桌子。一个有 2 个字段 StartDate 和 EndDate。一张表,其中只有一个字段日期。因此,当您在开始日期和结束日期之间有 3 天时。他必须在新表中插入 3 行。

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

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 是否不为零?

4

1 回答 1

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_
于 2013-04-09T10:58:28.403 回答