<?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: proc sql in do loop in macro with %eval in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194968#M36668</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You cannot do that.&amp;nbsp; my_numeric_column is part of the Base SAS language, i.e. its in a dataset.&amp;nbsp; &amp;amp;i and the loop are part of the macro language.&amp;nbsp; At the time the macro pre-processor is working, i.e. when it is resolving the macro code, there is no dataset available - so the variable does not exist, nor does the proc sql.&amp;nbsp; That is all later on at compile time.&amp;nbsp; The macro pre-processor is there to expand on the text given using its rules.&amp;nbsp; Give example test data in a datastep of what you want have and example of what you want to achieve.&amp;nbsp; For example, you could use arrays:&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array new_name_{3} 8.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=1 to 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new_name_{i}=my_numeric_column+100;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 28 May 2015 12:27:50 GMT</pubDate>
    <dc:creator>RW9</dc:creator>
    <dc:date>2015-05-28T12:27:50Z</dc:date>
    <item>
      <title>proc sql in do loop in macro with %eval</title>
      <link>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194967#M36667</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I need some help with the case.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have something like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro my_macro;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %do i = 1 %to 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc sql;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table my_table as&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my_text_column,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my_numeric_column,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my_numeric_column + 100 as new_name_%eval(my_numeric_column + &amp;amp;i.)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from other_table&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;%my_macro;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And here's the error I get:&lt;/P&gt;&lt;P&gt;&lt;EM&gt;ERROR: A character operand was found in the %EVAL function or %IF condition where a numeric operand is required. The condition was: &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my_numeric_column + 1&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;How can make a column with a name that contains equation with sql column value?&lt;/P&gt;&lt;P&gt;For example when my_numeric_column equals 15 and i=1, the result I expect is new column name &lt;EM&gt;new_name_16&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the reply&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;katrinaaa90&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2015 11:40:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194967#M36667</guid>
      <dc:creator>katrinaaa90</dc:creator>
      <dc:date>2015-05-28T11:40:45Z</dc:date>
    </item>
    <item>
      <title>Re: proc sql in do loop in macro with %eval</title>
      <link>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194968#M36668</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You cannot do that.&amp;nbsp; my_numeric_column is part of the Base SAS language, i.e. its in a dataset.&amp;nbsp; &amp;amp;i and the loop are part of the macro language.&amp;nbsp; At the time the macro pre-processor is working, i.e. when it is resolving the macro code, there is no dataset available - so the variable does not exist, nor does the proc sql.&amp;nbsp; That is all later on at compile time.&amp;nbsp; The macro pre-processor is there to expand on the text given using its rules.&amp;nbsp; Give example test data in a datastep of what you want have and example of what you want to achieve.&amp;nbsp; For example, you could use arrays:&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array new_name_{3} 8.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=1 to 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new_name_{i}=my_numeric_column+100;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2015 12:27:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194968#M36668</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2015-05-28T12:27:50Z</dc:date>
    </item>
    <item>
      <title>Re: proc sql in do loop in macro with %eval</title>
      <link>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194969#M36669</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Can you give an example of what you have and what you want?&amp;nbsp; I think this can be solved with a sum statement and an equation but I'm having trouble picturing what you are trying to do.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2015 12:36:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194969#M36669</guid>
      <dc:creator>Steelers_In_DC</dc:creator>
      <dc:date>2015-05-28T12:36:13Z</dc:date>
    </item>
    <item>
      <title>Re: proc sql in do loop in macro with %eval</title>
      <link>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194970#M36670</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You cannot create variables dynamically on the contents of other variables while a proc sql or a data step is running. The structure of the datasets is set while the step is compiled, and cannot change thereafter.&lt;/P&gt;&lt;P&gt;This would also be physically impossible, as the structure of a SAS dataset is written into its header page and determines the layout of all following records, and therefore can't change while the dataset is being written.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You need to completely revise your logic.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2015 12:36:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194970#M36670</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2015-05-28T12:36:19Z</dc:date>
    </item>
    <item>
      <title>Re: proc sql in do loop in macro with %eval</title>
      <link>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194971#M36671</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;STRONG&gt;this is what I have:&lt;/STRONG&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;my_text_column&lt;/TD&gt;&lt;TD&gt;my_numeric_column&lt;/TD&gt;&lt;TD&gt;active&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;period_201401&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;period_201401&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;period_201401&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;period_201402&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;period_201402&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;period_201402&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;and this is what I want for the first iteration of the loop (i=1):&lt;/STRONG&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;my_text_column&lt;/TD&gt;&lt;TD&gt;my_numeric_column&lt;/TD&gt;&lt;TD&gt;sum_of_period_5&lt;/TD&gt;&lt;TD&gt;sum_of_period_6&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;period_201401&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;period_201402&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;so the SQL could be just sum(active) ... group by my_text_column or sum(case when active=1 then 1 end)&lt;/P&gt;&lt;P&gt;the sum is not the problem - the name is&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2015 13:18:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194971#M36671</guid>
      <dc:creator>katrinaaa90</dc:creator>
      <dc:date>2015-05-28T13:18:32Z</dc:date>
    </item>
    <item>
      <title>Re: proc sql in do loop in macro with %eval</title>
      <link>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194972#M36672</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That explains why it won't work. I wasn't aware of the sequence of this steps.&lt;/P&gt;&lt;P&gt;But... the name of the new column still depends on the value from the dataset, so it cannot be done with simple array.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As far as I understand it is not possible inside the macro. Will it work if I do "do loop" through i = 1 to 3 outside the macro?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Like that:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;do i = 1 to 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc sql;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table my_table as&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my_text_column,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my_numeric_column,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum(active) as new_name_eval(my_numeric_column + &amp;amp;i.)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from other_table&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; quit;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;edit: right... do loop cannot be done outside data step...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2015 13:27:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194972#M36672</guid>
      <dc:creator>katrinaaa90</dc:creator>
      <dc:date>2015-05-28T13:27:42Z</dc:date>
    </item>
    <item>
      <title>Re: proc sql in do loop in macro with %eval</title>
      <link>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194973#M36673</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;So after three iterations you'll have 8 columns?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2015 13:33:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194973#M36673</guid>
      <dc:creator>Steelers_In_DC</dc:creator>
      <dc:date>2015-05-28T13:33:00Z</dc:date>
    </item>
    <item>
      <title>Re: proc sql in do loop in macro with %eval</title>
      <link>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194974#M36674</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You will need to separate out the creation of variable names from the creation of your data set.&amp;nbsp; For example, this might be a start to create a string that holds the proper variable names:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; select distinct 'sum_of_period' || put(my_numeric_column, 1.) into : variable_names separated by ' ' from have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; %put &amp;amp;variable_names;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then add another SELECT statement to actually extract data and populate the proper names.&amp;nbsp; That might be a difficult task, but you need to begin by separating this into two steps.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2015 13:55:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194974#M36674</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2015-05-28T13:55:42Z</dc:date>
    </item>
    <item>
      <title>Re: proc sql in do loop in macro with %eval</title>
      <link>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194975#M36675</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Pretty straightforward then.&amp;nbsp; Do your summing on the normlised data, then transpose it up:&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;&amp;nbsp; infile datalines dlm=" ";&lt;/P&gt;&lt;P&gt;&amp;nbsp; length my_text_column $20;&lt;/P&gt;&lt;P&gt;&amp;nbsp; input my_text_column $ my_numeric_column active;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;period_201401 4 1&lt;/P&gt;&lt;P&gt;period_201401 4 1&lt;/P&gt;&lt;P&gt;period_201401 4 0&lt;/P&gt;&lt;P&gt;period_201402 5 1&lt;/P&gt;&lt;P&gt;period_201402 5 0&lt;/P&gt;&lt;P&gt;period_201402 5 0&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;&amp;nbsp; create table INTER as&lt;/P&gt;&lt;P&gt;&amp;nbsp; select&amp;nbsp; MY_TEXT_COLUMN,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MY_NUMERIC_COLUMN,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUM(ACTIVE) as RES&lt;/P&gt;&lt;P&gt;&amp;nbsp; from&amp;nbsp;&amp;nbsp;&amp;nbsp; HAVE&lt;/P&gt;&lt;P&gt;&amp;nbsp; group by MY_TEXT_COLUMN,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MY_NUMERIC_COLUMN;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc transpose data=inter out=want prefix=sum_of_period_;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by my_text_column;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var res;&lt;/P&gt;&lt;P&gt;&amp;nbsp; id my_numeric_column;&lt;/P&gt;&lt;P&gt;&amp;nbsp; idlabel my_numeric_column;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2015 13:56:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194975#M36675</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2015-05-28T13:56:44Z</dc:date>
    </item>
    <item>
      <title>Re: proc sql in do loop in macro with %eval</title>
      <link>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194976#M36676</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is a common issue when someone want to reshape data from a useful data model to a reporting or summarization data model.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Many times it is far better to just use the reporting tool and place data in your meta-data; such as when you move the period value into part of an array of column names.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can use Proc REPORT or TABULATE for reporting.&lt;/P&gt;&lt;P&gt;Proc TRANSPOSE and MEANS can be used to reshape the data.&amp;nbsp; Likewise a DATA STEP with an array and DOW loop processing can reshape and summarize in one pass.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With regards to the sample, what do you want when more than one 'my_numeric' value occurs within a 'my_text_column'' ? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can we call column1 as month and column2&amp;nbsp; as day ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;length month $15 day value 8;&lt;/P&gt;&lt;P&gt;input month day value;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;X 4 1&lt;/P&gt;&lt;P&gt;X 4 1&lt;/P&gt;&lt;P&gt;X 4 0&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;X 5 1&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;X 5 2&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;X 5 3&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;X 5 4&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;X 5 5&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;X 5 6&lt;/P&gt;&lt;P&gt;Y 5 1&lt;/P&gt;&lt;P&gt;Y 5 0&lt;/P&gt;&lt;P&gt;Y 5 0&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do you want&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;[this seems somewhat reasonable if you drop the day column]&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;month day sum_dayforward2 ... sum_dayforward32&lt;/P&gt;&lt;P&gt;X ? . . . 2 15 . . . . . . . ...&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;Y ? . . . 2 1 . . . . . . . ...&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;or &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;[this seems weird]&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;month day sum_dayforward2 ... sum_dayforward32&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;X 4 . . . 2 . . . . . ... &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;X 5 . . . . 15 &lt;SPAN style="font-size: 13.3333330154419px;"&gt;. . . . ... &lt;/SPAN&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;Y 5&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt; . . . . 1 &lt;/SPAN&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;. . . . ... &lt;/SPAN&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2015 14:09:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/proc-sql-in-do-loop-in-macro-with-eval/m-p/194976#M36676</guid>
      <dc:creator>RichardDeVen</dc:creator>
      <dc:date>2015-05-28T14:09:40Z</dc:date>
    </item>
  </channel>
</rss>

