<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: sql execution based on condition in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/sql-execution-based-on-condition/m-p/360703#M274689</link>
    <description>&lt;P&gt;This might do it:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro do_this;

%let mact=;

proc sql noprint;
   select distinct mac_id format 15. into :mact SEPARATED BY ','
   from km.dmc_f
   where king = 'No';
quit;
 
%if "&amp;amp;mact" &amp;gt; " " %then %do;
/* Execute when macro is not null */
proc sql;
    create table km.mac_king as
    select id.*,
    case when id.macid in (&amp;amp;mact.) then 'Yes'
    else '' end as Duplicated
   from km.dmc_f id;
quit;
%end;
%else %do;
/* Execute when macro is null */
proc sql;
    create table km.mac_king as
    select id.*,
    '' as Duplicated
   from km.dmc_f id;
quit;
%end;

%mend;

%do_this
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Untested, for lack of example data.&lt;/P&gt;</description>
    <pubDate>Tue, 23 May 2017 12:23:57 GMT</pubDate>
    <dc:creator>Kurt_Bremser</dc:creator>
    <dc:date>2017-05-23T12:23:57Z</dc:date>
    <item>
      <title>sql execution based on condition</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sql-execution-based-on-condition/m-p/360698#M274688</link>
      <description>&lt;P&gt;i have simple code that works fine as long as :mact macro variable&amp;nbsp;is not empty. But when macro variable :mact is null/blank it throws error.&lt;/P&gt;&lt;P&gt;How do i fix this using if then else logic so it can see if macro is null and then execute?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;proc sql noprint;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; select distinct mac_id format 15. into :mact SEPARATED BY ','&lt;BR /&gt;&amp;nbsp;&amp;nbsp; from km.dmc_f&lt;BR /&gt;&amp;nbsp;&amp;nbsp; where king = 'No';&lt;BR /&gt;&amp;nbsp; quit;&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/* Execute when macro is not null */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc sql;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table km.mac_king as&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select id.*,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case when id.macid in (&amp;amp;mact.) then 'Yes'&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else '' end as Duplicated&lt;BR /&gt;&amp;nbsp;&amp;nbsp; from km.dmc_f id;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/* Execute when macro is null */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc sql;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table km.mac_king as&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select id.*,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; '' as Duplicated&lt;BR /&gt;&amp;nbsp;&amp;nbsp; from km.dmc_f id;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;</description>
      <pubDate>Tue, 23 May 2017 12:09:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sql-execution-based-on-condition/m-p/360698#M274688</guid>
      <dc:creator>sasuser101</dc:creator>
      <dc:date>2017-05-23T12:09:13Z</dc:date>
    </item>
    <item>
      <title>Re: sql execution based on condition</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sql-execution-based-on-condition/m-p/360703#M274689</link>
      <description>&lt;P&gt;This might do it:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro do_this;

%let mact=;

proc sql noprint;
   select distinct mac_id format 15. into :mact SEPARATED BY ','
   from km.dmc_f
   where king = 'No';
quit;
 
%if "&amp;amp;mact" &amp;gt; " " %then %do;
/* Execute when macro is not null */
proc sql;
    create table km.mac_king as
    select id.*,
    case when id.macid in (&amp;amp;mact.) then 'Yes'
    else '' end as Duplicated
   from km.dmc_f id;
quit;
%end;
%else %do;
/* Execute when macro is null */
proc sql;
    create table km.mac_king as
    select id.*,
    '' as Duplicated
   from km.dmc_f id;
quit;
%end;

%mend;

%do_this
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Untested, for lack of example data.&lt;/P&gt;</description>
      <pubDate>Tue, 23 May 2017 12:23:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sql-execution-based-on-condition/m-p/360703#M274689</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2017-05-23T12:23:57Z</dc:date>
    </item>
    <item>
      <title>Re: sql execution based on condition</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sql-execution-based-on-condition/m-p/360715#M274690</link>
      <description>&lt;P&gt;I read &amp;nbsp;a technical paper &lt;SPAN&gt;long time ago&lt;/SPAN&gt;&amp;nbsp;by John King &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/15410"&gt;@data_null__&lt;/a&gt;&amp;nbsp;that outlines the problem in testing missing values for macro variables. I'm afraid I don't have the link to that paper right now to share. Basically, I'd make a small adjustment to Kurt's suggestion.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token macrobound"&gt;%macro&lt;/SPAN&gt; do_this&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="token macroname"&gt;%let&lt;/SPAN&gt; mact&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;sql&lt;/SPAN&gt; noprint&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
   &lt;SPAN class="token statement"&gt;select&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;distinct&lt;/SPAN&gt; mac_id &lt;SPAN class="token procnames"&gt;format&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;15&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;into&lt;/SPAN&gt; :mact SEPARATED &lt;SPAN class="token statement"&gt;BY&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;','&lt;/SPAN&gt;
   &lt;SPAN class="token keyword"&gt;from&lt;/SPAN&gt; km&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;dmc_f
   &lt;SPAN class="token statement"&gt;where&lt;/SPAN&gt; king &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;'No'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;quit&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
 
&lt;STRONG&gt;&lt;SPAN class="token macrostatement"&gt;%if&lt;/SPAN&gt; %length(&amp;amp;mact) &lt;SPAN class="token operator"&gt;&amp;gt;0&lt;/SPAN&gt; &lt;SPAN class="token macrostatement"&gt;%then&lt;/SPAN&gt; &lt;SPAN class="token macrostatement"&gt;%do&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;/*Notice here*/&lt;/SPAN&gt;&lt;/STRONG&gt;
&lt;SPAN class="token comment"&gt;/* Execute when macro is not null */&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;sql&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
    create &lt;SPAN class="token statement"&gt;table&lt;/SPAN&gt; km&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;mac_king as
    &lt;SPAN class="token statement"&gt;select&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;id&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;*&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;
    case when &lt;SPAN class="token keyword"&gt;id&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;macid &lt;SPAN class="token operator"&gt;in&lt;/SPAN&gt; &lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;mact&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;then&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;'Yes'&lt;/SPAN&gt;
    &lt;SPAN class="token keyword"&gt;else&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;''&lt;/SPAN&gt; end as Duplicated
   &lt;SPAN class="token keyword"&gt;from&lt;/SPAN&gt; km&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;dmc_f &lt;SPAN class="token keyword"&gt;id&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;quit&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token macrostatement"&gt;%end&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token macrostatement"&gt;%else&lt;/SPAN&gt; &lt;SPAN class="token macrostatement"&gt;%do&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token comment"&gt;/* Execute when macro is null */&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;sql&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
    create &lt;SPAN class="token statement"&gt;table&lt;/SPAN&gt; km&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;mac_king as
    &lt;SPAN class="token statement"&gt;select&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;id&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;*&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;
    &lt;SPAN class="token string"&gt;''&lt;/SPAN&gt; as Duplicated
   &lt;SPAN class="token keyword"&gt;from&lt;/SPAN&gt; km&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;dmc_f &lt;SPAN class="token keyword"&gt;id&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;quit&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token macrostatement"&gt;%end&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="token macrobound"&gt;%mend&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="token macroname"&gt;%do_this&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;HTH,&lt;/P&gt;&lt;P&gt;Naveen Srinivasan&lt;/P&gt;</description>
      <pubDate>Tue, 23 May 2017 12:58:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sql-execution-based-on-condition/m-p/360715#M274690</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2017-05-23T12:58:59Z</dc:date>
    </item>
    <item>
      <title>Re: sql execution based on condition</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sql-execution-based-on-condition/m-p/360729#M274691</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

        proc sql;
    create table km.mac_king as
    select id.*,
    case when id.macid in ( 

select distinct mac_id
   from km.dmc_f
   where king = 'No'

 ) then 'Yes'
    else '' end as Duplicated
   from km.dmc_f id;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 23 May 2017 13:45:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sql-execution-based-on-condition/m-p/360729#M274691</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2017-05-23T13:45:41Z</dc:date>
    </item>
  </channel>
</rss>

