Hola, podría ser algo así:
Código sql:
Ver originalDECLARE @avan_p INT
DECLARE @avan_r INT
DECLARE @acum_p INT
DECLARE @acum_r INT
--
SET @avan_p = 200
SET @avan_r = 1600
--Acumulado programado, si no hay registros devolverá el valor de avance programado
SET @acum_p = (SELECT isnull((SUM(avance_programado)+@avan_p),@avan_p) FROM avances)
--Acumulado realizado, si no hay registros devolverá el valor de avance realizado
SET @acum_r = (SELECT isnull((SUM(avance_realizado)+@avan_r),@avan_r) FROM avances)
--select @acum_p, @acum_r
--
INSERT INTO avances(avance_programado, avance_realizado, acumulado_programado, acumulado_realizado)
VALUES(@avan_p, @avan_r, @acum_p, @acum_r)
GO
SELECT * FROM avances
Estoy asumiendo que la tabla se llama avances, antes de insertar los datos hago una suma de los campos
avance_programado y avance_realizado y le sumo los datos que se insertarán, también uso IsNull para cuando no existan registros, entonces que por defecto llene esos campos con los valores de
avance_programado y avance_realizado
Espero te sirva