upsum в примере - ручками посчитан.
По идее надо так
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[testpartiya]') and objectproperty(id, N'isusertable') = 1)
drop table [dbo].[testpartiya]
go
create table [dbo].[testpartiya] (
[id] [int] identity (1, 1) not null , --уникальный последовательно возрастающий с шагом 1 индекс номера партии
[idpartiya] [int] not null , -- номер партии
[value] [int] not null , -- сколько по этой партии осталось
[seb] [float] not null, -- себестоимость
[upsum] [int] default 0 not null , -- сумма нарастающим итогом согласно сортировке id (пока только для возрастающей)
) on [primary]
go
insert into testpartiya (idpartiya,value,seb,upsum) values (1,2,10,1)
insert into testpartiya (idpartiya,value,seb,upsum) values (2,3,11,1)
insert into testpartiya (idpartiya,value,seb,upsum) values (3,4,12,1)
insert into testpartiya (idpartiya,value,seb,upsum) values (4,5,13,1)
insert into testpartiya (idpartiya,value,seb,upsum) values (5,6,14,1)
update testpartiya
set upsum = (select isnull(sum(value),0)from testpartiya z where z.id<=id)
но этот update правильно не работет. Везде пишет одно число.
Хотя приведенный ниже селект все корректно делает
select *,(select isnull(sum(value),0)from testpartiya z where z.id<=t.id) from testpartiya t
я так понимаю что проблема в том что в апдейте должен быть тоже алиас при расчете суммы. Но как его сделать - не знаю....