It's not clear in your question, but the results suggest that you want the
previous value in Column B to fit into the calculation for each row.
The function you need is
LAG (Transact-SQL) - SQL Server | Microsoft Docs[
^]
In order to get that to work you will need something to order the rows by. In the example below I've added an Identity column which implies an order to the table
declare @demo table (id int identity(1,1), ColA decimal(15,4), ColB decimal(15,4));
insert into @demo (ColA, ColB) values
(0.0000,100),
(0.0160,101.595),
(-0.0015,101.446),
(0.0103,102.492),
(0.0003,102.519),
(0.0009,102.611);
select id, ColA, ColB, LAG(ColB,1,100) OVER (Order by ID) as PrevB
from @demo
The results show that I get the previous value of Column B or 100 if there is no previous value
id ColA ColB PrevB
1 0.0000 100.0000 100.0000
2 0.0160 101.5950 100.0000
3 -0.0015 101.4460 101.5950
4 0.0103 102.4920 101.4460
5 0.0003 102.5190 102.4920
6 0.0009 102.6110 102.5190
As you are going to use that PrevB more than once, I suggest putting the results above into a Common Table Expression, temporary table or sub-query. E.g.
;with CTE AS
(
select id, ColA, ColB, LAG(ColB,1,100) OVER (Order by ID) as PrevB
from @demo
)
select ColA, ColB = PrevB + (PrevB * ColA)
from cte;