<?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: Macro and Proc SQL in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Macro-and-Proc-SQL/m-p/431518#M106757</link>
    <description>&lt;P&gt;If each of your daily tables are sorted by id, then it is a very simple data step.&amp;nbsp; Assuming all your daily files are named DAILYxxx (where xxx is used to specify the date), then:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set daily: ;
  by id date;
  if lag(field1)^=field1 and first.id=0;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But your sample does not show the daily tables as sorted.&amp;nbsp; You could sort each of them and run the above program.&amp;nbsp; But&amp;nbsp;sorting a year's&amp;nbsp;worth of daily files can be expensive .&amp;nbsp; In that case, a hash object which carries the most recent value of FIELD1 to compare against the current version can be used:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want (drop=rc);
  set daily: ;
  by date;
  if _n_=1 then do;
    if 0 then set daily1 (rename=(field1=oldfield1));
    declare hash h (dataset:'daily1 (rename=(field1=oldfield1))');
      h.definekey('id');
      h.definedata('oldfield1');
      h.definedone();
  end;
  call missing(oldfield1);
  rc=h.find();
  if rc^=0 then h.replace(key:id,data:field1);
  if rc=0 and field1^=oldfield1;
  rc=h.replace(key:id,data:field1);
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;The dataset DAILY1 is the name&amp;nbsp; I use for the earliest daily&amp;nbsp; data set.&lt;/P&gt;</description>
    <pubDate>Sat, 27 Jan 2018 05:52:58 GMT</pubDate>
    <dc:creator>mkeintz</dc:creator>
    <dc:date>2018-01-27T05:52:58Z</dc:date>
    <item>
      <title>Macro and Proc SQL</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-and-Proc-SQL/m-p/431495#M106747</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;For the scenario below, i am trying to use a combination of macro and sql statement to run 1 year or more of data (Daily feeds)&lt;/P&gt;&lt;P&gt;I have daily tables and trying to extracts the dates changes were made to specific field in a table.&lt;/P&gt;&lt;P&gt;Day1:5-1-2017&lt;/P&gt;&lt;P&gt;AccountNumber Date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Field1&lt;/P&gt;&lt;P&gt;123456&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; 5-1-2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&lt;/P&gt;&lt;P&gt;123425&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; 5-1-2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&lt;/P&gt;&lt;P&gt;123426&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; 5-1-2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&lt;/P&gt;&lt;P&gt;123427&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; 5-1-2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&lt;/P&gt;&lt;P&gt;Day2:5-2-2017&lt;/P&gt;&lt;P&gt;123456 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5-2-2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&lt;/P&gt;&lt;P&gt;123425&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; 5-2-2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&lt;/P&gt;&lt;P&gt;&lt;FONT color="#ff0000"&gt;123426&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; 5-2-2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;123427&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; 5-2-2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&lt;/P&gt;&lt;P&gt;Day3:5-3-2017&lt;/P&gt;&lt;P&gt;&lt;FONT color="#ff0000"&gt;123456 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5-3-2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;123425&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; 5-3-2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&lt;/P&gt;&lt;P&gt;123426&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; 5-3-2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B&lt;/P&gt;&lt;P&gt;123427&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; 5-3-2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&lt;/P&gt;&lt;P&gt;Day4:5-4-2017&lt;/P&gt;&lt;P&gt;&lt;FONT color="#ff0000"&gt;123456 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5-3-2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;123425&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; 5-3-2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&lt;/P&gt;&lt;P&gt;123426&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; 5-3-2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B&lt;/P&gt;&lt;P&gt;123427&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; 5-3-2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Result:&lt;/P&gt;&lt;P&gt;5-2-2017 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 123426&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; 5-2-2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B&lt;/P&gt;&lt;P&gt;5-3-2017 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 123456 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5-3-2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C&lt;/P&gt;&lt;P&gt;5-4-2017 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 123456 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5-3-2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" size="1"&gt;Below is what i have so far. &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="1"&gt;&lt;STRONG&gt;%macro&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; date_loop(start,end);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%let&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; start=&lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%sysfunc&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt;(inputn(&amp;amp;start,anydtdte9.));&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%let&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; end=&lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%sysfunc&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt;(inputn(&amp;amp;end,anydtdte9.));&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%let&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; dif=&lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%sysfunc&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt;(intck(day,&amp;amp;start,&amp;amp;end));&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%do&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; i=&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="Courier New" size="1"&gt;0&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%to&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; &amp;amp;dif;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%let&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; date=&lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%sysfunc&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt;(intnx(day,&amp;amp;start,&amp;amp;i,b),date9.);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%put&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; &amp;amp;date;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%end&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT color="#000080" face="Courier New" size="1"&gt;%mend&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Courier New" size="1"&gt; date_loop;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" size="1"&gt;%&lt;STRONG&gt;&lt;I&gt;date_loop&lt;/I&gt;&lt;/STRONG&gt;(&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="Courier New" size="1"&gt;01&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Courier New" size="1"&gt;may2017,05&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt;may2017);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="1"&gt;&lt;STRONG&gt;proc&lt;/STRONG&gt;&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#000080" face="Courier New" size="1"&gt;sql&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Courier New" size="1"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;create&lt;/FONT&gt; &lt;FONT color="#0000ff" face="Courier New" size="1"&gt;table&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; xyz &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;as&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" size="1"&gt;(&lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;select&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; * &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;from&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; table1&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;where&amp;nbsp;&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt;FILE_SEND_DT = &amp;amp;start + &lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="Courier New" size="1"&gt;1 &lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;except&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;select&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; * &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;from&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; table1&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;where &lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt;FILE_SEND_DT = &amp;amp;start);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;quit;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance for your help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 27 Jan 2018 01:08:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-and-Proc-SQL/m-p/431495#M106747</guid>
      <dc:creator>dipalp</dc:creator>
      <dc:date>2018-01-27T01:08:37Z</dc:date>
    </item>
    <item>
      <title>Re: Macro and Proc SQL</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-and-Proc-SQL/m-p/431518#M106757</link>
      <description>&lt;P&gt;If each of your daily tables are sorted by id, then it is a very simple data step.&amp;nbsp; Assuming all your daily files are named DAILYxxx (where xxx is used to specify the date), then:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set daily: ;
  by id date;
  if lag(field1)^=field1 and first.id=0;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But your sample does not show the daily tables as sorted.&amp;nbsp; You could sort each of them and run the above program.&amp;nbsp; But&amp;nbsp;sorting a year's&amp;nbsp;worth of daily files can be expensive .&amp;nbsp; In that case, a hash object which carries the most recent value of FIELD1 to compare against the current version can be used:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want (drop=rc);
  set daily: ;
  by date;
  if _n_=1 then do;
    if 0 then set daily1 (rename=(field1=oldfield1));
    declare hash h (dataset:'daily1 (rename=(field1=oldfield1))');
      h.definekey('id');
      h.definedata('oldfield1');
      h.definedone();
  end;
  call missing(oldfield1);
  rc=h.find();
  if rc^=0 then h.replace(key:id,data:field1);
  if rc=0 and field1^=oldfield1;
  rc=h.replace(key:id,data:field1);
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;The dataset DAILY1 is the name&amp;nbsp; I use for the earliest daily&amp;nbsp; data set.&lt;/P&gt;</description>
      <pubDate>Sat, 27 Jan 2018 05:52:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-and-Proc-SQL/m-p/431518#M106757</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2018-01-27T05:52:58Z</dc:date>
    </item>
    <item>
      <title>Re: Macro and Proc SQL</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-and-Proc-SQL/m-p/431534#M106762</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you for the response. Each of the daily files is 1.5-1.9 million rows, therefore, i was using PROC SQL along with a macro rather than a data step (that has to get all that data into SAS).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For the SAS code below, if i were to run a month worth of data, are you suggesting extracting the files, naming them daily1, daily2, daily3....daily30? and then running the below code?&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 procnames"&gt;data&lt;/SPAN&gt; want &lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token keyword"&gt;drop&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;rc&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token keyword"&gt;set&lt;/SPAN&gt; daily: &lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token statement"&gt;by&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;date&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token keyword"&gt;if&lt;/SPAN&gt; _n_&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;then&lt;/SPAN&gt; do&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
    &lt;SPAN class="token keyword"&gt;if&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;0&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;then&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;set&lt;/SPAN&gt; daily1 &lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;rename&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;field1&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;oldfield1&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
    &lt;SPAN class="token keyword"&gt;declare&lt;/SPAN&gt; hash h &lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;dataset:&lt;SPAN class="token string"&gt;'daily1 (rename=(field1=oldfield1))'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
      h&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;definekey&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'id'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
      h&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;definedata&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'oldfield1'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
      h&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;definedone&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  end&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  call &lt;SPAN class="token function"&gt;missing&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;oldfield1&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  rc&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;h&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;find&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token keyword"&gt;if&lt;/SPAN&gt; rc&lt;SPAN class="token operator"&gt;^=&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;0&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;then&lt;/SPAN&gt; h&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token keyword"&gt;replace&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;key:&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;data&lt;/SPAN&gt;:field1&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token keyword"&gt;if&lt;/SPAN&gt; rc&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;0&lt;/SPAN&gt; and field1&lt;SPAN class="token operator"&gt;^=&lt;/SPAN&gt;oldfield1&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  rc&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;h&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token keyword"&gt;replace&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;key:&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;data&lt;/SPAN&gt;:field1&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Thanks!&lt;/P&gt;</description>
      <pubDate>Sat, 27 Jan 2018 14:33:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-and-Proc-SQL/m-p/431534#M106762</guid>
      <dc:creator>dipalp</dc:creator>
      <dc:date>2018-01-27T14:33:38Z</dc:date>
    </item>
    <item>
      <title>Re: Macro and Proc SQL</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-and-Proc-SQL/m-p/431567#M106773</link>
      <description>&lt;P&gt;What do you mean "extract the files"?&amp;nbsp; I had the impression that you already have a collection of daily data sets, which means no extraction is necessary.&amp;nbsp; If so what are their names?&amp;nbsp; Use those names.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But I had also assumed presumed you have a naming convention in place, like &amp;nbsp; data_20170103 data_20170104 .... data_20171231, which would permit a compact way of generating a dataset name list, as opposed to entering every dataset name.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For example, using the convention in the above paragraph you could request all the 2017 July datasets using the expression &lt;EM&gt;&lt;STRONG&gt;data_201707:&lt;/STRONG&gt;&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What naming convention, if any do your daily datasets have?&lt;/P&gt;</description>
      <pubDate>Sat, 27 Jan 2018 22:59:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-and-Proc-SQL/m-p/431567#M106773</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2018-01-27T22:59:31Z</dc:date>
    </item>
    <item>
      <title>Re: Macro and Proc SQL</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-and-Proc-SQL/m-p/431864#M106876</link>
      <description>&lt;P&gt;I apologize, i need to clarify the problem. The data&amp;nbsp;is in a table&amp;nbsp; in the data warehouse (it has over a million rows per load date). In order to prevent&amp;nbsp;extracting&amp;nbsp;over 45 million rows of data per month, i wanted to use the approach below. &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I used a macro to create dates (within the dates mentioned), then go through&amp;nbsp;1 iteration of PROC SQL statement per date to identify field changes for entire year. I hope that clarified your question.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="1"&gt;&lt;STRONG&gt;%macro&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; date_loop(start,end);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%let&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; start=&lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%sysfunc&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt;(inputn(&amp;amp;start,anydtdte9.));&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%let&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; end=&lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%sysfunc&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt;(inputn(&amp;amp;end,anydtdte9.));&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%let&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; dif=&lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%sysfunc&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt;(intck(day,&amp;amp;start,&amp;amp;end));&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%do&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; i=&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="Courier New" size="1"&gt;0&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%to&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; &amp;amp;dif;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%let&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; date=&lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%sysfunc&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt;(intnx(day,&amp;amp;start,&amp;amp;i,b),date9.);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%put&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; &amp;amp;date;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;%end&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT color="#000080" face="Courier New" size="1"&gt;%mend&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Courier New" size="1"&gt; date_loop;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" size="1"&gt;%&lt;STRONG&gt;&lt;I&gt;date_loop&lt;/I&gt;&lt;/STRONG&gt;(&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="Courier New" size="1"&gt;01&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Courier New" size="1"&gt;may2017,05&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt;may2017);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="1"&gt;&lt;STRONG&gt;proc&lt;/STRONG&gt;&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#000080" face="Courier New" size="1"&gt;sql&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Courier New" size="1"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;create&lt;/FONT&gt; &lt;FONT color="#0000ff" face="Courier New" size="1"&gt;table&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; xyz &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;as&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" size="1"&gt;(&lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;select&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; * &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;from&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; table1&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;where&amp;nbsp;&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt;FILE_SEND_DT = &amp;amp;start + &lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="Courier New" size="1"&gt;1 &lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;except&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;select&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; * &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;from&lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt; table1&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="1"&gt;where &lt;/FONT&gt;&lt;FONT face="Courier New" size="1"&gt;FILE_SEND_DT = &amp;amp;start);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;quit;&lt;/P&gt;</description>
      <pubDate>Mon, 29 Jan 2018 17:05:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-and-Proc-SQL/m-p/431864#M106876</guid>
      <dc:creator>dipalp</dc:creator>
      <dc:date>2018-01-29T17:05:39Z</dc:date>
    </item>
  </channel>
</rss>

