[code:sbe7khq9]data raw;
infile datalines missover;
input id seq var $ value;
datalines;
10 1 A
10 2 A
10 3 A
10 4 B 100
10 5 B 200
10 6 B 300
10 7 A
10 8 A
10 9 B 20
10 10 B 30
;
data out(drop=sum);
sum=0;
do _n_=1 by 1 until(last.var);
set raw;
by var notsorted;
sum+value;
if var='A' then output;
end;
if var='B' then do;
value=sum; output;
end;
run;[/code:sbe7khq9]