Hi, I'm trying to create a counting variable in PROC SQL to give name to tables.
PROC SQL;
i=1;
CREATE TABLE i AS SELECT* FROM A.A WHERE XX=i;
RUN;
I can not declarete the variable i to make it interactive.
%macro make_datasets(max_i);
%do i = 1 %to &max_i;
data a.a_&i;
set a.a (where=(XX=&i));
run;
%end;
%mend;
%make_datasets(100);
The usual recommendation is don't do this...if you specify why, send can usually offer a more efficient alternative.
Otherwise You want a macro loop.
http://www.ats.ucla.edu/stat/sas/seminars/sas_macros_introduction/
How to split a table by groups.
http://blogs.sas.com/content/sasdummy/2015/01/26/how-to-split-one-data-set-into-many/
You need to use macro language to generate code.
%let id=100 ;
%let inds=a.a ;
proc sql ;
create table x&id as
select *
from &inds
where id = &id
;
quit;
Thanks, it was just the sintaxsis.. but I just forget said I want a loop. I change my code for this:
%LET i=1;
DATA A.A_&i;
SET A.A(WHERE=(XX=&i));
RUN;
But I need, i=i+1
%LET i=1;
DATA A.A_&i;
SET A.A(WHERE=(XX=&i));
i=i+1
RUN;
%macro make_datasets(max_i);
%do i = 1 %to &max_i;
data a.a_&i;
set a.a (where=(XX=&i));
run;
%end;
%mend;
%make_datasets(100);
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Get started using SAS Studio to write, run and debug your SAS programs.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.