SQL Server 沿用上一日的数据

表名:f_test

表结构:如下图

SQL语句说明:如果表中的数据不是按日连续有值,则某日在没有值的情况下可以沿用上一日的值。或者沿用上一月、上一年的值。

操作说明:①取表中最小日期,并且该日期有所需的值;②取表中最大日期,或者去当前日期;③按日循环遍历日期;④对当日的值进行判断:如果当前日期的值满足需求,则随意给个语句,只要能正常执行,并且不影响表;如果当前日期的值不满足需求,则插入上一日的值;⑤当前日期增1,继续遍历,直至遍历完成。

SQL语句如下:

declare @startDate datetime, @ednDate datetime
select @startDate = MIN(fdate) from f_test
select @ednDate = MAX(fdate) from f_test

while @startDate <= @ednDate
begin
    IF EXISTS(select fdate from f_test where fdate=@startDate)
        select 1;
    ELSE 
        insert into f_test(fdate, fnumber)select @startDate as fdate, fnumber from f_test where fdate = dateadd(dd,-1,@startDate);
    set @startDate=dateadd(dd,1,@startDate)
end
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值