Hi, another idea ...
proc summary data=dates nway;
class id;
output out=want (drop= _: ) idgroup(max(visit) out [3] (point)=p);
run;
data want;
set want;
last3 = sum(of p: );
run;
see also ...
Transposing Data Using PROC SUMMARY'S IDGROUP Option
http://support.sas.com/resources/papers/proceedings10/102-2010.pdf