BookmarkSubscribeRSS Feed
me55
Quartz | Level 8

okay, so i need to, as a part of a larger process, check if the date in a field (MONTH) has last months date in it.  if it does it needs to run a series of queries and if it does not, then run other queries.   i am just missing how to figure this out.  i assume to do it, it needs to be run from a macro so something like...

 

%macro datecheck;

%local qry mnthck

%let qry=(proc sql; select max(MONTH) as MNTH from TABLE; quit;);

%let today=%sysfunc(today());

%let lmnth=%sysfunc(intnx(month,&today,-1));

%if &lmnth=&qry %then

%do;

 

list of queries to run...

 

%end;

%mend datecheck;

run;

 

any help?  obviously that does not work but i am also not far off from getting the right answer.  i am just missing the part of getting the query results. 

1 REPLY 1
Kurt_Bremser
Super User
proc sql noprint;
select max(month) into :mnth from table;
quit;

%macro datecheck;
%if %sysfunc(intnx(month,&mnth,0,b)) = %sysfunc(intnx(month,%sysfunc(today()),-1,b))
%then %do; /* last month */
/* some queries */
%end;
%else %do; /* other month */
/* some other queries */
%end;
%mend;
%datecheck

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
  • 1 reply
  • 658 views
  • 0 likes
  • 2 in conversation