I have a set of transactions occurring at specific points in time:
CREATE TABLE Transactions (
TransactionDate Date NOT NULL,
TransactionValue Intege
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