Hi Fettah Here's one way to do it: first I did a Cartesian Join (work.step1) via PROC SQL, then use the SAS data step by group processing to get the records you want. The results dataset has a new variable result_date which is the variable you want (just use a drop and rename, to drop last_date and rename result_date to last_date), I left that out to make it clearer to see how it is working. Andy proc sql ; create table work.step1 as select current.*, previous.* from work.current as current, work.previous as previous where previous.id=current.id order by current.id, current.visit_date, previous.last_date ; quit ; data results ; retain result_date ; attrib result_date length=4 informat=date9. format=ddmmyy10.; set work.step1 ; by id visit_date ; if first.visit_date then result_date=. ; if visit_date > last_date then result_date=last_date ; if last.visit_date then output ; run ;
... View more