BookmarkSubscribeRSS Feed
Q1983
Lapis Lazuli | Level 10

proc sql;

create table test as

select ln,monthyr

from test99;

quit;

sample output

ln      monthyr

11      201502

12      201503

13      201504

I performed a macro to segment each dataset into its own dataset

%macro (monthyr);

proc sql;

create table test11_&monthyr as

select *

from test;

quit;

%mend;

The objective is to create something like this

test11_201502

test11_201503  etc

The code runs however no segmenting occurs.  What is the issue with my code.  I am somewhat new to macro building.  Note MonthYr is a date data type


2 REPLIES 2
Astounding
PROC Star

Macros are not the answer here.  You need to be able to write a successful program without using macros first.  Once you have that part working correctly, writing the macro will be easy.

Good luck.

dcruik
Lapis Lazuli | Level 10

Are you looking to filter each of your data sets (test11_201502, test11_201503, etc..) only by the monthyr variable?  Otherwise I would agree, a macro is not what you're looking for.  You could loop through each individual monthyr variable one at a time to create the data set names you want, but with the code provided, you will just have the same data in each data set.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

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
  • 2 replies
  • 1465 views
  • 0 likes
  • 3 in conversation