You were on the right track with window functions , however Lag () wouldn't help here. The good news is that you can use sum () over
Example
Declare @YourTable Table ([Item] varchar(50),[Month] int,[Beg] int,[PerChg] int)
Insert Into @YourTable Values
('001',1,5,5)
,('001',2,0,-1)
,('001',3,0,4)
Select *
,RunningTotal = sum(Beg+PerChg) over (Partition By Item Order by Month)
From @YourTable
Returns
Item Month Beg PerChg RunningTotal
001 1 5 5 10
001 2 0 -1 9
001 3 0 4 13