By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE T(
ID int,
OB int,
CB int
);
INSERT INTO T VALUES (1,100 , 100);
INSERT INTO T VALUES (2,100 , 200);
INSERT INTO T VALUES (3,100 , 300);
INSERT INTO T VALUES (4,100 , 400);
INSERT INTO T VALUES (5,-100 , 300);
INSERT INTO T VALUES (6,100 , 400);
INSERT INTO T VALUES (7,100 , 500);
INSERT INTO T VALUES (8,-100 , 400);
UPDATE T
SET OB = 200
FROM T
WHERE ID = 4;
UPDATE T
SET CB = val + (SELECT CB FROM T WHERE ID = 3)
FROM T JOIN (
SELECT SUM(OB) over(order by ID) val, ID
FROM T
WHERE ID > 3
) X ON T.ID = X.ID
SELECT * FROM T
ID | OB | CB |
---|---|---|
1 | 100 | 100 |
2 | 100 | 200 |
3 | 100 | 300 |
4 | 200 | 500 |
5 | -100 | 400 |
6 | 100 | 500 |
7 | 100 | 600 |
8 | -100 | 500 |