<?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: SAVE %MACRO OUTPUT in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/SAVE-MACRO-OUTPUT/m-p/378713#M276814</link>
    <description>Thank you KurtBremser, that's exactly what I want!&lt;BR /&gt;</description>
    <pubDate>Mon, 24 Jul 2017 14:59:18 GMT</pubDate>
    <dc:creator>viviwu</dc:creator>
    <dc:date>2017-07-24T14:59:18Z</dc:date>
    <item>
      <title>SAVE %MACRO OUTPUT</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAVE-MACRO-OUTPUT/m-p/378671#M276811</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a question about the macro, my codes are as following:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let week_nb = 2;

%MACRO week(date_deb=,date_week=);&lt;BR /&gt;&lt;BR /&gt;PROC SQL;&lt;BR /&gt;CREATE TABLE Client_base AS &lt;BR /&gt;&lt;BR /&gt;SELECT&lt;BR /&gt;B1.sName as Boutique&lt;BR /&gt;,R0.pop as Type&lt;BR /&gt;,COUNT(DISTINCT R0.ID) as nb_client&lt;BR /&gt;,SUM(S1.fTotalPrice) as Turnover&lt;BR /&gt;&lt;BR /&gt;FROM save.liste_clients R0&lt;BR /&gt;&lt;BR /&gt;INNER JOIN VALIBLA2.VA_NmsRecipient R1 ON (R0.ID = R1.iRecipientId)&lt;BR /&gt;INNER JOIN VALIBLA2.VA_ClientSegmentChina R2 ON (R0.ID = R2.iRecipientId)&lt;BR /&gt;&lt;BR /&gt;LEFT JOIN VALIBLA2.va_sale S1 ON (R1.iRecipientId = S1.iSaleRecipientId AND &amp;amp;date_deb. &amp;lt;= datepart(S1.tsDate) &amp;lt;= &amp;amp;date_week. &lt;BR /&gt; AND S1.iSaleBoutiqueId IN (1345,1355)&lt;BR /&gt; AND S1.fTotalPrice &amp;gt; 0)&lt;BR /&gt;LEFT JOIN VALIBLA2.VA_Boutique B1 ON (S1.iSaleBoutiqueId = B1.iBoutiqueId)&lt;BR /&gt;&lt;BR /&gt;WHERE R1.iLinked = 1&lt;BR /&gt;AND R2.iSegment2010 &amp;gt;= 40&lt;BR /&gt;AND B1.iNtype &amp;lt; 3 &lt;BR /&gt;GROUP BY 1,2&lt;BR /&gt;HAVING CALCULATED Turnover &amp;gt;0;&lt;BR /&gt;QUIT;&lt;BR /&gt;&lt;BR /&gt;%MEND week;&lt;BR /&gt;&lt;BR /&gt;%week(date_deb = '19JUN2017'd, date_week=intnx("day",&amp;amp;date_deb,7*&amp;amp;week_nb.,"sameday"))&lt;BR /&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;when I set week_nb =1, output is as following:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Boutique&lt;/TD&gt;&lt;TD&gt;Type&lt;/TD&gt;&lt;TD&gt;nb_client&lt;/TD&gt;&lt;TD&gt;Turnover&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;BTQ1&lt;/TD&gt;&lt;TD&gt;Repetears&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;638&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;when I set week_nb =2,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;output is as following:&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Boutique&lt;/TD&gt;&lt;TD&gt;Type&lt;/TD&gt;&lt;TD&gt;nb_client&lt;/TD&gt;&lt;TD&gt;Turnover&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;SPAN&gt;BTQ1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;Repetears&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2648&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And the question is:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How can I save&amp;nbsp;each macro %week output as a sas data set so that I can stack them together and form a new sataset including week1-12?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 24 Jul 2017 13:06:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAVE-MACRO-OUTPUT/m-p/378671#M276811</guid>
      <dc:creator>viviwu</dc:creator>
      <dc:date>2017-07-24T13:06:33Z</dc:date>
    </item>
    <item>
      <title>Re: SAVE %MACRO OUTPUT</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAVE-MACRO-OUTPUT/m-p/378681#M276812</link>
      <description>&lt;P&gt;You can simply append the data sets to save the results using PROC APPEND.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please put reasonable carriage returns in your code so we can actually read it.&lt;/P&gt;</description>
      <pubDate>Mon, 24 Jul 2017 13:23:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAVE-MACRO-OUTPUT/m-p/378681#M276812</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2017-07-24T13:23:57Z</dc:date>
    </item>
    <item>
      <title>Re: SAVE %MACRO OUTPUT</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAVE-MACRO-OUTPUT/m-p/378686#M276813</link>
      <description>&lt;P&gt;Just a hint:&lt;/P&gt;
&lt;P&gt;although it looks as one could edit the contents of a code subwindow directly from the main posting window, adding new lines won't work. Place the cursor in the code, click the "little running man" button again, and enter your new lines in the pop-up window.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Concur with &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/10892"&gt;@PaigeMiller&lt;/a&gt;, just add a proc append step; you can do that in a %do loop insinde the macro that loops week_nb from 1 to 12.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Something like this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
%MACRO week(date_deb=,max_week=);
%do week_nb = 1 %to &amp;amp;max_week;
PROC SQL;
CREATE TABLE Client_int AS
SELECT
  B1.sName as Boutique,
  R0.pop as Type,
  COUNT(DISTINCT R0.ID) as nb_client,
  SUM(S1.fTotalPrice) as Turnover
  FROM save.liste_clients R0
  INNER JOIN VALIBLA2.VA_NmsRecipient R1
  ON (R0.ID = R1.iRecipientId)
  INNER JOIN VALIBLA2.VA_ClientSegmentChina R2
  ON (R0.ID = R2.iRecipientId)
  LEFT JOIN VALIBLA2.va_sale S1
  ON (
    R1.iRecipientId = S1.iSaleRecipientId AND
    &amp;amp;date_deb. &amp;lt;= datepart(S1.tsDate) &amp;lt;= intnx("day",&amp;amp;date_deb,7*&amp;amp;week_nb.,"sameday") AND
    S1.iSaleBoutiqueId IN (1345,1355) AND
    S1.fTotalPrice &amp;gt; 0
  )
  LEFT JOIN VALIBLA2.VA_Boutique B1
  ON (S1.iSaleBoutiqueId = B1.iBoutiqueId)
  WHERE R1.iLinked = 1 AND R2.iSegment2010 &amp;gt;= 40 AND B1.iNtype &amp;lt; 3
  GROUP BY 1,2
  HAVING CALCULATED Turnover &amp;gt;0
;
QUIT;

proc append base=Client_base data=Client_int;
run;
%end;
%MEND week;

%week(date_deb = '19JUN2017'd,max_week=12)
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 24 Jul 2017 13:32:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAVE-MACRO-OUTPUT/m-p/378686#M276813</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2017-07-24T13:32:26Z</dc:date>
    </item>
    <item>
      <title>Re: SAVE %MACRO OUTPUT</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAVE-MACRO-OUTPUT/m-p/378713#M276814</link>
      <description>Thank you KurtBremser, that's exactly what I want!&lt;BR /&gt;</description>
      <pubDate>Mon, 24 Jul 2017 14:59:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAVE-MACRO-OUTPUT/m-p/378713#M276814</guid>
      <dc:creator>viviwu</dc:creator>
      <dc:date>2017-07-24T14:59:18Z</dc:date>
    </item>
  </channel>
</rss>

