bobguy 发表于 2013-8-13 10:46
The solution is very inefficient if many data sets needs to be generated.
I give a hint here,
...
proc sql noprint;
create table vlist as
select distinct var1 from raw
order by var1;
quit;
data _null_;
set vlist end=last;
call symputx("v"||cats(_n_),var1);
if last then call symput("N",cats(_n_));
run;
%macro split;
data %do i= 1 %to &N.;
data_&&v&i
%end;;
set raw;
select (var1);
%do i= 1 %to &N.;
when ("&&v&i") output data_&&v&i;
%end;
end;
run;
%mend;
%split