data have;
input var1 $ var2 var3 :date9.;
format var3 date9.;
cards;
A . .
A . .
A . .
A 1 16APR2010
A . .
B . .
B 1 17MAY2010
B . .
B . .
;
run;
/*Distinct number of values in var1*/
proc sql;
select count(distinct var1) into: num from have;
quit;
%put #
data want;
do i=1 by 1 until(last.var1);
set have;
by var1;
retain count;
if var2=1 then count=i;
end;
do i=1 by 1 until (last.var1);
set have;
by var1;
if i<=count then output;
end;
format var3 date9.;
drop i count;
run;