我相信我有这个(?)的逻辑,但不是100%肯定语法,如果这将工作。希望在周末和假日(空白)填充自己的前一天数据行数据。因此,如果我有一组看起来像这样的数据,已按日期排序
DATE VALUE PERCENT
12/31/2014 100 .01
1/2/2015 150 .015
1/5/2015 200 .015
1/6/2015 200 .015
1/7/2015 200 .015
1/8/2015 250 .015
1/9/2015 300 .021
1/12/2015 400 .022
1/13/2015 400 .022
因此,对于上面的这组数据,我想循环并插入以下行:
DATE VALUE PERCENT
1/1/2015 100 .01 (carries over the 12/31 values)
1/3/2015 150 .015 (carries over the 1/2 values)
1/4/2015 150 .015 (carries over the 1/2 or 1/3 values)
1/10/2015 300 .021 (carries over the 1/9 values)
1/11/2015 300 .021 (carries over the 1/10 values)
这是我建议的伪代码:
DECLARE @CurrDate datetime
DECLARE @VALUE int
DECLARE @PERCENT decimal(20,2)
SET @CurrDate = Min(Date) from table
SET @VALUE = value from table where Date = @CurrDate
SET @PERCENT = percent from table where Date =@CurrDate
For each Date in table
@CurrDate = CurrDate + 1
If exists (SELECT Date From table where Date = @CurrDate) then
@VALUE = select value from table where date = @currDate
@PERCENT = select percent from table where date = @currDate
next
ELSE
INSERT INTO table (SELECT @CurrDate, @VALUE, @PERCENT)
END
NEXT
非常感谢任何帮助!
答案 0 :(得分:2)
你可以重复这样的插入:
insert into table(date, value, percent)
select dateadd(day, 1, date)
from table
where not exists (select 1
from table t2
where t2.date = dateadd(day, 1, t.date)
);
您可能需要这样做两到三次,具体取决于您缺少的连续天数。