BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
mariange8282
Obsidian | Level 7

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. 

 

1 ACCEPTED SOLUTION
4 REPLIES 4
Reeza
Super User

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/

https://communities.sas.com/t5/SAS-Communities-Library/SAS-9-4-Macro-Language-Reference-Has-a-New-Ap...

 

How to split a table by groups. 

http://blogs.sas.com/content/sasdummy/2015/01/26/how-to-split-one-data-set-into-many/

 

Tom
Super User Tom
Super User

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;
mariange8282
Obsidian | Level 7

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;

 

Develop Code with SAS Studio

Get started using SAS Studio to write, run and debug your SAS programs.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 2053 views
  • 0 likes
  • 4 in conversation