The solution Reeza suggested will work if you know you have persons in sequential order of 1 through 10. If you don't, here's a more flexible solution that gets the list of persons from the have dataset. data have; input person day : date9. events; format day date9.; datalines; 1 03jan2012 1 1 15jan2012 2 1 01mar2012 1 2 02feb2012 3 2 01mar2012 1 23 28jan2012 4 ; run; proc sort data=have (keep=person) out=persons nodup; by person; run; data person_days; keep person day; set persons; format day date9.; do day = '01jan2012'd to '31mar2012'd; output; end; run; proc sql; create table want as select a.person, a.day, coalesce (b.events, 0) as events from person_days a left join have b on a.person = b.person and a.day = b.day ; quit;
... View more