<?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 Creating a macro using call symput or proc sql into in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-macro-using-call-symput-or-proc-sql-into/m-p/658032#M197201</link>
    <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Can i create this macro variable using a proc sql into or call symput in a data step. I tried creating one but the first 3 variables that i don't want the sum of was also getting summed as i was using it for the entire dataset but i want to make it flexible and don't want to sum the first 3 variables but all other after that. I will paste my code at the end of this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%let selectvars = var1, var2, var3, sum(A_Count) as Sum_of_A_Count, sum(E_Count_GP)as Sum_of_E_Count_GP,&lt;BR /&gt;sum(E_Count_BE19) as Sum_of_E_Count_BE19, sum(E_Count_Prc) as Sum_of_E_Count_Prc,&lt;BR /&gt;sum(V_Count_GP) as Sum_of_V_Count_GP, sum(V_Count_BE19) as Sum_of_V_Count_BE19,&lt;BR /&gt;sum(V_Count_Prc) as Sum_of_V_Count_Prc, sum(O_Count) as Sum_of_O_Count, &lt;BR /&gt;sum(A_ADR) as Sum_of_A_ADR, sum(E_ADR_GP) as Sum_of_E_ADR_GP,&lt;BR /&gt;sum(E_ADR_BE19) as Sum_of_E_ADR_BE19, sum(E_ADR_Prc) as Sum_of_E_ADR_Prc,&lt;BR /&gt;sum(V_ADR_GP) as Sum_of_V_ADR_GP, sum(V_ADR_BE19) as Sum_of_V_ADR_BE19,&lt;BR /&gt;sum(V_ADR_Prc) as Sum_of_V_ADR_Prc, sum(A_BDR) as Sum_of_A_BDR,&lt;BR /&gt;sum(E_BDR_GP) as Sum_of_E_BDR_GP, sum(E_BDR_BE19) as Sum_of_E_BDR_BE19,&lt;BR /&gt;sum(E_BDR_Prc) as Sum_of_E_BDR_Prc, sum(V_BDR_GP) as Sum_of_V_BDR_GP,&lt;BR /&gt;sum(V_BDR_BE19) as Sum_of_V_BDR_BE19, sum(V_BDR_Prc) as Sum_of_V_BDR_Prc,&lt;BR /&gt;sum(O_Amt) as Sum_of_O_Amt &lt;BR /&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Code i used :&lt;/STRONG&gt;&lt;/U&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc sql;&lt;BR /&gt;select cat("(","A.",strip(name)," - ","B.",strip(name),")"," as "," ",strip(name))&lt;BR /&gt;into : diff_var&lt;BR /&gt;seperated by ","&lt;BR /&gt;from dictionary.columns&lt;BR /&gt;where Libname = "WORK" and memname = upcase("ADHOC_Pivot");&lt;BR /&gt;quit;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;</description>
    <pubDate>Fri, 12 Jun 2020 12:04:55 GMT</pubDate>
    <dc:creator>hiteshchauhan1</dc:creator>
    <dc:date>2020-06-12T12:04:55Z</dc:date>
    <item>
      <title>Creating a macro using call symput or proc sql into</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-macro-using-call-symput-or-proc-sql-into/m-p/658032#M197201</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Can i create this macro variable using a proc sql into or call symput in a data step. I tried creating one but the first 3 variables that i don't want the sum of was also getting summed as i was using it for the entire dataset but i want to make it flexible and don't want to sum the first 3 variables but all other after that. I will paste my code at the end of this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%let selectvars = var1, var2, var3, sum(A_Count) as Sum_of_A_Count, sum(E_Count_GP)as Sum_of_E_Count_GP,&lt;BR /&gt;sum(E_Count_BE19) as Sum_of_E_Count_BE19, sum(E_Count_Prc) as Sum_of_E_Count_Prc,&lt;BR /&gt;sum(V_Count_GP) as Sum_of_V_Count_GP, sum(V_Count_BE19) as Sum_of_V_Count_BE19,&lt;BR /&gt;sum(V_Count_Prc) as Sum_of_V_Count_Prc, sum(O_Count) as Sum_of_O_Count, &lt;BR /&gt;sum(A_ADR) as Sum_of_A_ADR, sum(E_ADR_GP) as Sum_of_E_ADR_GP,&lt;BR /&gt;sum(E_ADR_BE19) as Sum_of_E_ADR_BE19, sum(E_ADR_Prc) as Sum_of_E_ADR_Prc,&lt;BR /&gt;sum(V_ADR_GP) as Sum_of_V_ADR_GP, sum(V_ADR_BE19) as Sum_of_V_ADR_BE19,&lt;BR /&gt;sum(V_ADR_Prc) as Sum_of_V_ADR_Prc, sum(A_BDR) as Sum_of_A_BDR,&lt;BR /&gt;sum(E_BDR_GP) as Sum_of_E_BDR_GP, sum(E_BDR_BE19) as Sum_of_E_BDR_BE19,&lt;BR /&gt;sum(E_BDR_Prc) as Sum_of_E_BDR_Prc, sum(V_BDR_GP) as Sum_of_V_BDR_GP,&lt;BR /&gt;sum(V_BDR_BE19) as Sum_of_V_BDR_BE19, sum(V_BDR_Prc) as Sum_of_V_BDR_Prc,&lt;BR /&gt;sum(O_Amt) as Sum_of_O_Amt &lt;BR /&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Code i used :&lt;/STRONG&gt;&lt;/U&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc sql;&lt;BR /&gt;select cat("(","A.",strip(name)," - ","B.",strip(name),")"," as "," ",strip(name))&lt;BR /&gt;into : diff_var&lt;BR /&gt;seperated by ","&lt;BR /&gt;from dictionary.columns&lt;BR /&gt;where Libname = "WORK" and memname = upcase("ADHOC_Pivot");&lt;BR /&gt;quit;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;</description>
      <pubDate>Fri, 12 Jun 2020 12:04:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-macro-using-call-symput-or-proc-sql-into/m-p/658032#M197201</guid>
      <dc:creator>hiteshchauhan1</dc:creator>
      <dc:date>2020-06-12T12:04:55Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a macro using call symput or proc sql into</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-macro-using-call-symput-or-proc-sql-into/m-p/658037#M197202</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/271996"&gt;@hiteshchauhan1&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Could you please provide some sample data in datalines of the table&amp;nbsp;&lt;SPAN&gt;ADHOC_Pivot and clarify what &lt;U&gt;value&lt;/U&gt; you expect to in the macrovariable?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Best,&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 12 Jun 2020 12:13:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-macro-using-call-symput-or-proc-sql-into/m-p/658037#M197202</guid>
      <dc:creator>ed_sas_member</dc:creator>
      <dc:date>2020-06-12T12:13:41Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a macro using call symput or proc sql into</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-macro-using-call-symput-or-proc-sql-into/m-p/658047#M197203</link>
      <description>&lt;P&gt;What is your group by ?&amp;nbsp; If you don't group by var1, var2, var3 SQL will automatically remerge the sums.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Have you tried using Proc MEANS to compute the sums?&amp;nbsp; MEANS is very likely &lt;STRONG&gt;much&lt;/STRONG&gt; easier to code than what you are attempting and does not require macro.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;P&gt;Simulated data&lt;/P&gt;
&lt;LI-SPOILER&gt;
&lt;PRE&gt;* simulate some data;
data have;
  call streaminit(123);
  do one = 1 to 3;
  do two = 1 to 10;
  do three = 1 to 5;
    do instance = 1 to 20 + rand('integer', 2,12);
      array x a_count e_count_gp e_count_be19 e_count_prc;
      do over x;
        x = rand('integer', 1, 20);
      end;
      output;
    end;
  end;
  end;
  end;&lt;BR /&gt;  drop instance;
run;
&lt;/PRE&gt;
&lt;/LI-SPOILER&gt;
&lt;P&gt;Proc MEANS&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;proc means noprint data=have;
  by one two three;
  output out=sums sum= / autoname;
run;&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 12 Jun 2020 12:29:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-macro-using-call-symput-or-proc-sql-into/m-p/658047#M197203</guid>
      <dc:creator>RichardDeVen</dc:creator>
      <dc:date>2020-06-12T12:29:57Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a macro using call symput or proc sql into</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-macro-using-call-symput-or-proc-sql-into/m-p/658053#M197206</link>
      <description>&lt;P&gt;Luckily, your first 3 variables, which you do not want summed, stand out because they do not have an underscore in them.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Just use that to create the summary expressions with SQL:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
  select cats("Sum(",name,") as Sum_of_",name) into : sums separated by ","
  from dictionary.columns
  where Libname = "WORK" and memname = upcase("ADHOC_Pivot") and name ? '_';
quit;&lt;BR /&gt;%let selectvars=var1,var2,var3,&amp;amp;sums;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;I changed the CAT function to CATS, so I did not have to use the STRIP function.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Or, if you do not want to sum the first 3 variables (but all the others), and you want the names of the first 3 variables to be generated automatically also, you could do this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
  select case
     when varnum&amp;lt;=3 then name
     else cats("Sum(",name,") as Sum_of_",name) 
  end into : selectvars separated by ","
  from dictionary.columns
  where Libname = "WORK" and memname = upcase("ADHOC_Pivot");
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 12 Jun 2020 12:49:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-macro-using-call-symput-or-proc-sql-into/m-p/658053#M197206</guid>
      <dc:creator>s_lassen</dc:creator>
      <dc:date>2020-06-12T12:49:02Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a macro using call symput or proc sql into</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-macro-using-call-symput-or-proc-sql-into/m-p/658054#M197207</link>
      <description>&lt;P&gt;var1, var2 and var3 are my grouping variables.&lt;/P&gt;</description>
      <pubDate>Fri, 12 Jun 2020 12:49:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-macro-using-call-symput-or-proc-sql-into/m-p/658054#M197207</guid>
      <dc:creator>hiteshchauhan1</dc:creator>
      <dc:date>2020-06-12T12:49:40Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a macro using call symput or proc sql into</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-macro-using-call-symput-or-proc-sql-into/m-p/658055#M197208</link>
      <description>&lt;LI-SPOILER&gt;All the columns of the dataset ADHOC_pivot is my value for macro variable but in the form which i described in Macro Variable sumvars.&lt;/LI-SPOILER&gt;</description>
      <pubDate>Fri, 12 Jun 2020 12:51:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-macro-using-call-symput-or-proc-sql-into/m-p/658055#M197208</guid>
      <dc:creator>hiteshchauhan1</dc:creator>
      <dc:date>2020-06-12T12:51:34Z</dc:date>
    </item>
    <item>
      <title>Re: Creating a macro using call symput or proc sql into</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Creating-a-macro-using-call-symput-or-proc-sql-into/m-p/658659#M197377</link>
      <description>&lt;P&gt;Thanks&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/76464"&gt;@s_lassen&lt;/a&gt;&amp;nbsp;this worked perfectly.&lt;/P&gt;</description>
      <pubDate>Mon, 15 Jun 2020 08:19:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Creating-a-macro-using-call-symput-or-proc-sql-into/m-p/658659#M197377</guid>
      <dc:creator>hiteshchauhan1</dc:creator>
      <dc:date>2020-06-15T08:19:04Z</dc:date>
    </item>
  </channel>
</rss>

