data test(keep=id date interval);
format date yymmdd10.;
infile cards missover;
input
obs $ id $ date :ddmmyy10. interval sum end;
cards;
1 a1 04/07/2013 0 0
2 a1 04/04/2013 91 91
3 a1 22/02/2013 41 132 132
4 a2 23/02/2016 0 0
5 a2 28/07/2015 210 210
6 a2 06/07/2015 22 232 232
7 a3 20/07/2015 0 0
8 a3 11/06/2015 39 39
9 a3 30/03/2015 73 112
10 a3 26/01/2015 63 136
11 a3 05/12/2014 52 115 227
;
run;
data want;
retain first_sum;
set test;
by id;
lag_interval=lag(interval);
if first.id then do;
sum=interval;
first_sum=sum;
end;
else sum=lag_interval+interval;
if last.id then end=sum-first_sum;
drop lag_interval first_sum;
run;
proc print;
run;