Like @RW9 , I think your expected data may be wrong. I don't see why it doesn't look like this. PTID new_stdt new_end P3747440 2-Nov-11 2-Nov-11 P3747440 3-Nov-11 30-Nov-11 P3747440 1-Dec-11 1-Dec-11 P3747440 2-Dec-11 28-Dec-11 P3747440 29-Dec-11 29-Dec-11 P3747440 30-Dec-11 30-Dec-11 P3747440 31-Dec-11 31-Dec-11 I think you are taking every available date and creating a period between each date & the day before the next date. Then on the last date, that is the start date and the end date. @RW9code does this , but needs to include NODUP when sorting data table 'INTER' . Also add a line right at the end of the 'DATA WANT' step ...
if last.ptid then do;
new_end=stdt;
output;
end;
run;
... View more