Вот один подход, использующий First_Value()
и Sum() over()
Пример
Declare @YourTable Table ([Date] date,[Type] varchar(50),[Temp] decimal(10,2),[Value] decimal(10,2))
Insert Into @YourTable Values
('2018-04-24','TypeA',0,5)
,('2018-04-25','TypeA',0,12)
,('2018-04-26','TypeA',0,21)
,('2018-04-27','TypeA',0,14)
,('2018-04-30','TypeA',0,16)
,('2018-05-01','TypeA',0.6,18)
,('2018-04-25','TypeB',0,20)
,('2018-04-26','TypeB',0,81)
,('2018-04-27','TypeB',1,42)
,('2018-04-30','TypeB',0,65)
,('2018-05-01','TypeB',0.6,22)
;with cte0 as (
Select *
,NewValue = FIRST_VALUE(Value) over (Partition By [Type] Order By [Date])
+Sum(Temp) over (Partition By [Type] Order By [Date])
From @YourTable
)
Update cte0 set Value = NewValue
Обновленная таблица
