<?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: max value of previous 30 days for every record of a table in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/max-value-of-previous-30-days-for-every-record-of-a-table/m-p/315390#M68779</link>
    <description>&lt;P&gt;Is your source table already ordered by date within the field1/field2/field3 groups?&amp;nbsp; You mention "hive" so maybe not.&amp;nbsp; But if it is, a DATA step is often more efficient than PROC SQL:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Starting with the 31st record per group the&amp;nbsp;process gets maximum value of the PRIOR_30 array.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The PRIOR_30 array has these properties:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;It's _TEMPORARY_ which means it's automatically retained, but not written to the resulting data set.&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;LI&gt;Array bounds are 0 through 29.&amp;nbsp; That's so it can&amp;nbsp;continually hold the rolling 30 preceding days, where the position in the array is determined by dividing variable I by 30 and using the remainder [=mod(I,30)] to specify which array element.&amp;nbsp; The result is that each&amp;nbsp;value of VAR replaces the 30th preceding value&amp;nbsp; (e.g. record 31 replaces record 1 in element 1 of the array, since each has a remainder of 1 when divided by 30). Note records 30,60 etc go into element 0.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Untested program:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want ;
  array prior_30{0:29} _temporary_   ;
  set have;
  by field1 field2 field3 notsorted;
  I+1;
  if first.field3 then do;
    call missing(of prior_30{*});
    I=1;
  end;
  if I&amp;gt;30 then maxvar=max(of prior_30{*});
  prior_30{mod(I,30)}=var;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 30 Nov 2016 02:53:51 GMT</pubDate>
    <dc:creator>mkeintz</dc:creator>
    <dc:date>2016-11-30T02:53:51Z</dc:date>
    <item>
      <title>max value of previous 30 days for every record of a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/max-value-of-previous-30-days-for-every-record-of-a-table/m-p/315366#M68766</link>
      <description>&lt;P&gt;hi, i have a table in which I need to calculate the max among the previous 30 days for every record , is there a way in hive with sub queries?, see below for sample data&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;FIELD1&lt;/TD&gt;&lt;TD&gt;FIELD2&lt;/TD&gt;&lt;TD&gt;FIELD3&lt;/TD&gt;&lt;TD&gt;DATE&lt;/TD&gt;&lt;TD&gt;VAR&lt;/TD&gt;&lt;TD&gt;MAX VAR&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20160930&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161001&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161002&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161003&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161004&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161005&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161006&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161007&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161008&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161009&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161010&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161011&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161012&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161013&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161014&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161015&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161016&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161017&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161018&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161019&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161020&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161021&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161022&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161023&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161024&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161025&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161026&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161027&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161028&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161029&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161030&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161031&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161101&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161102&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161103&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161104&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161105&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161106&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161107&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161108&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161109&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161110&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161111&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161112&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161113&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161114&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161115&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161116&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161117&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161118&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161119&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161120&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161121&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161122&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161123&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161124&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161125&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161126&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161127&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161128&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;USA&lt;/TD&gt;&lt;TD&gt;TX&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161129&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20160930&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161001&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161002&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161003&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161004&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161005&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161006&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161007&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161008&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161009&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161010&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161011&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161012&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161013&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161014&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161015&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161016&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161017&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161018&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161019&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161020&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161021&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161022&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161023&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161024&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161025&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161026&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161027&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161028&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161029&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161030&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161031&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161101&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161102&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161103&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161104&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161105&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161106&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161107&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161108&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161109&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161110&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161111&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161112&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161113&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161114&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161115&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161116&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161117&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161118&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161119&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161120&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161121&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161122&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161123&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161124&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161125&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161126&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161127&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161128&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;UK&lt;/TD&gt;&lt;TD&gt;LONDON&lt;/TD&gt;&lt;TD&gt;RTB&lt;/TD&gt;&lt;TD&gt;20161129&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Tue, 29 Nov 2016 23:29:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/max-value-of-previous-30-days-for-every-record-of-a-table/m-p/315366#M68766</guid>
      <dc:creator>gmorla2016</dc:creator>
      <dc:date>2016-11-29T23:29:46Z</dc:date>
    </item>
    <item>
      <title>Re: max value of previous 30 days for every record of a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/max-value-of-previous-30-days-for-every-record-of-a-table/m-p/315369#M68769</link>
      <description>&lt;P&gt;Are you grouping by the first three variables? Also, is your date a SAS date, numeric with a date format?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A self join is what's typically used to compute these types of calculations. If you have SAS/ETS licensed, PROC EXPAND would be a straightforward option.&lt;/P&gt;</description>
      <pubDate>Tue, 29 Nov 2016 23:31:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/max-value-of-previous-30-days-for-every-record-of-a-table/m-p/315369#M68769</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-11-29T23:31:56Z</dc:date>
    </item>
    <item>
      <title>Re: max value of previous 30 days for every record of a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/max-value-of-previous-30-days-for-every-record-of-a-table/m-p/315371#M68771</link>
      <description>&lt;P&gt;Reeza, thanks for the reply.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;yes i am grouping by first three variables and my sasdate is in dateformat. i dont have sas ets, can you guide me in writing the self join.&lt;/P&gt;</description>
      <pubDate>Tue, 29 Nov 2016 23:42:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/max-value-of-previous-30-days-for-every-record-of-a-table/m-p/315371#M68771</guid>
      <dc:creator>gmorla2016</dc:creator>
      <dc:date>2016-11-29T23:42:11Z</dc:date>
    </item>
    <item>
      <title>Re: max value of previous 30 days for every record of a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/max-value-of-previous-30-days-for-every-record-of-a-table/m-p/315375#M68772</link>
      <description>&lt;P&gt;Proc SQL;&lt;/P&gt;
&lt;P&gt;create table want as select a.*, max(b.var) as maxvar&lt;/P&gt;
&lt;P&gt;from have as a&lt;/P&gt;
&lt;P&gt;join have as b&lt;/P&gt;
&lt;P&gt;on a.var1=b.var1&lt;/P&gt;
&lt;P&gt;..../*first thee vars go here*/&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;AND b.date between a.date and a.date+30 /*plus or minus depending on looking forward or back*/&lt;/P&gt;
&lt;P&gt;group by a.var1, a.var2, a.var3, a.date, a.var /*all variables from table a*/;&lt;/P&gt;
&lt;P&gt;quit;&lt;/P&gt;</description>
      <pubDate>Wed, 30 Nov 2016 00:03:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/max-value-of-previous-30-days-for-every-record-of-a-table/m-p/315375#M68772</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-11-30T00:03:13Z</dc:date>
    </item>
    <item>
      <title>Re: max value of previous 30 days for every record of a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/max-value-of-previous-30-days-for-every-record-of-a-table/m-p/315390#M68779</link>
      <description>&lt;P&gt;Is your source table already ordered by date within the field1/field2/field3 groups?&amp;nbsp; You mention "hive" so maybe not.&amp;nbsp; But if it is, a DATA step is often more efficient than PROC SQL:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Starting with the 31st record per group the&amp;nbsp;process gets maximum value of the PRIOR_30 array.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The PRIOR_30 array has these properties:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;It's _TEMPORARY_ which means it's automatically retained, but not written to the resulting data set.&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;LI&gt;Array bounds are 0 through 29.&amp;nbsp; That's so it can&amp;nbsp;continually hold the rolling 30 preceding days, where the position in the array is determined by dividing variable I by 30 and using the remainder [=mod(I,30)] to specify which array element.&amp;nbsp; The result is that each&amp;nbsp;value of VAR replaces the 30th preceding value&amp;nbsp; (e.g. record 31 replaces record 1 in element 1 of the array, since each has a remainder of 1 when divided by 30). Note records 30,60 etc go into element 0.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Untested program:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want ;
  array prior_30{0:29} _temporary_   ;
  set have;
  by field1 field2 field3 notsorted;
  I+1;
  if first.field3 then do;
    call missing(of prior_30{*});
    I=1;
  end;
  if I&amp;gt;30 then maxvar=max(of prior_30{*});
  prior_30{mod(I,30)}=var;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 30 Nov 2016 02:53:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/max-value-of-previous-30-days-for-every-record-of-a-table/m-p/315390#M68779</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2016-11-30T02:53:51Z</dc:date>
    </item>
    <item>
      <title>Re: max value of previous 30 days for every record of a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/max-value-of-previous-30-days-for-every-record-of-a-table/m-p/315409#M68788</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/31461"&gt;@mkeintz﻿&lt;/a&gt;&amp;nbsp;solution Also assumes that you have no gaps in your data so you need a record for each date. There's nothing wrong with this, just something to consider.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 30 Nov 2016 04:13:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/max-value-of-previous-30-days-for-every-record-of-a-table/m-p/315409#M68788</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-11-30T04:13:48Z</dc:date>
    </item>
    <item>
      <title>Re: max value of previous 30 days for every record of a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/max-value-of-previous-30-days-for-every-record-of-a-table/m-p/315453#M68816</link>
      <description>&lt;PRE&gt;
If you don't have big table, try SQL.


data have;
infile cards truncover expandtabs;
input FIELD1 $ FIELD2 $ FIELD3 $ DATE :yymmdd10. VAR;
format date yymmdd10.;
cards;
USA	TX	RTB	20160930	1
USA	TX	RTB	20161001	1
USA	TX	RTB	20161002	1
USA	TX	RTB	20161003	1
USA	TX	RTB	20161004	1
USA	TX	RTB	20161005	2
USA	TX	RTB	20161006	2
USA	TX	RTB	20161007	2
USA	TX	RTB	20161008	2
USA	TX	RTB	20161009	1
;
run;
proc sql;
select *,(select max(var) from have 
where field1=a.field1 and field2=a.field2 and field3=field3
and date between a.date-30 and a.date) as max_val
 from have as a;
quit;


&lt;/PRE&gt;</description>
      <pubDate>Wed, 30 Nov 2016 09:50:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/max-value-of-previous-30-days-for-every-record-of-a-table/m-p/315453#M68816</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2016-11-30T09:50:25Z</dc:date>
    </item>
    <item>
      <title>Re: max value of previous 30 days for every record of a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/max-value-of-previous-30-days-for-every-record-of-a-table/m-p/315558#M68864</link>
      <description>&lt;P&gt;I agree on the issue of "holes" in the data series.&amp;nbsp; Here's a modificatioon that accomodates gaps in the date sequence.&amp;nbsp; In effect it acts as if the missing&amp;nbsp; dates were present but VAR1 had a missing&amp;nbsp; value:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want (drop=_:);
  array prior_30{0:29} _temporary_   ;

  set have;
  by field1 field2 field3 notsorted;

  if first.field3 then do;
    call missing(of prior_30{*});
    _first_date=date;
  end;
  retain _first_date; 

  /* See if there are holes between current and preceding dates  */
  /* If so, assign missing values to corresponding array elements */
  _date_increment=dif(date);
  if _date_increment&amp;gt;1 then do _d=1 to _date_increment-1;
    prior_30{mod(date-_d,30)}=.;
  end;

  if date&amp;gt;=_first_date+30 then maxvar=max(of prior_30{*});
  prior_30{mod(date,30)}=var;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 30 Nov 2016 15:19:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/max-value-of-previous-30-days-for-every-record-of-a-table/m-p/315558#M68864</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2016-11-30T15:19:34Z</dc:date>
    </item>
  </channel>
</rss>

