Dear,
The sql code appeared in a macro. I want to know why '1' is in where statement. Please help. Thank you
%let flag=flag='Y'
proc sql;
create table population_extract as
select distinct
adsl.studyid
,adsl.sitenum
from adsl as a left join adex as b
where 1
&flag
;
quit;
I can only guess but I assume this allows for the &FLAG macro variable to be empty.
If the &flag variable is empty then the where clause will resolve to WHERE 1 which is always TRUE - the condition could also be WHERE 1=1 which maybe would be easier to understand.
You need some hard coded condition as a WHERE clause without anything would lead to a syntax error.
IF you populated the &FLAG macro variable then you need to use a string with results n a valid WHERE clause so something like below which then resolves to WHERE 1 AND flag='Y'
%let flag= AND flag='Y';
proc sql;
create table population_extract as
select distinct
adsl.studyid
,adsl.sitenum
from adsl as a left join adex as b
where 1
&flag
;
quit;
Or perhaps
%let flag= & flag='Y';
which would only add to the confusion.
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.