How to Determine Values for Missing Months based on Data of Previous Months in T-SQL

前端 未结 7 1675
庸人自扰
庸人自扰 2020-12-09 14:24

I have a set of transactions occurring at specific points in time:

CREATE TABLE Transactions (
    TransactionDate Date NOT NULL,
    TransactionValue Intege         


        
相关标签:
7条回答
  • 2020-12-09 15:03

    here's what i came up with

    declare @Transactions table (TransactionDate datetime, TransactionValue int)
    
    declare @MinDate datetime
    declare @MaxDate datetime
    declare @iDate datetime
    declare @Month int
    declare @count int
    declare @i int
    declare @PrevLvl int
    
    insert into @Transactions (TransactionDate, TransactionValue)
    select '1/1/09',1
    
    insert into @Transactions (TransactionDate, TransactionValue)
    select '3/1/09',2
    
    insert into @Transactions (TransactionDate, TransactionValue)
    select '5/1/09',3
    
    
    select @MinDate = min(TransactionDate) from @Transactions
    select @MaxDate = max(TransactionDate) from @Transactions
    
    set @count=datediff(mm,@MinDate,@MaxDate)
    set @i=1
    set @iDate=@MinDate
    
    
    while (@i<=@count)
    begin
    
        set @iDate=dateadd(mm,1,@iDate)
    
        if (select count(*) from @Transactions where TransactionDate=@iDate) < 1
        begin
    
            select @PrevLvl = TransactionValue from @Transactions where TransactionDate=dateadd(mm,-1,@iDate)
    
            insert into @Transactions (TransactionDate, TransactionValue)
            select @iDate, @prevLvl
    
        end
    
    
        set @i=@i+1
    end
    
    select *
    from @Transactions
    order by TransactionDate
    
    0 讨论(0)
提交回复
热议问题