<?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 Calculate a rolling/moving sum in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Calculate-a-rolling-moving-sum/m-p/852135#M336854</link>
    <description>&lt;P&gt;I have a dataset that contains the columns: Period, Segment and Sum.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;TABLE style="border-collapse: collapse; width: 144pt;" border="0" width="192" cellspacing="0" cellpadding="0"&gt;
&lt;TBODY&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD width="64" height="20" style="height: 15.0pt; width: 48pt;"&gt;Period&lt;/TD&gt;
&lt;TD width="64" style="width: 48pt;"&gt;Segment&lt;/TD&gt;
&lt;TD width="64" style="width: 48pt;"&gt;Sum&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jan-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jan-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;50&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jan-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;40&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;feb-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;80&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;feb-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;60&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;feb-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;30&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;mar-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;130&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;mar-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;110&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;mar-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;apr-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;200&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;apr-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;150&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;apr-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;40&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;maj-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;maj-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;80&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;maj-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;60&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jun-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;200&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jun-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;150&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jun-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;40&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jul-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;500&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jul-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jul-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;50&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;aug-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;400&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;aug-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;200&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;aug-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;sep-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;200&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;sep-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;sep-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;30&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;okt-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;400&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;okt-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;300&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;okt-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;200&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;nov-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;300&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;nov-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;nov-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;50&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;dec-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;40&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;dec-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;dec-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;10&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&lt;BR /&gt;Now I would like to create a new column that is the moving/rolling sum for each segment over the previous 6 periods.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;In total this would give me the following table:&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="414"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="50"&gt;Period&lt;/TD&gt;
&lt;TD width="62"&gt;Segment&lt;/TD&gt;
&lt;TD width="34"&gt;Sum&lt;/TD&gt;
&lt;TD width="268"&gt;summary_rolling_6months_per_segment&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jan-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jan-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;50&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jan-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;40&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;feb-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;80&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;feb-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;60&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;feb-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;30&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;mar-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;130&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;mar-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;110&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;mar-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;apr-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;200&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;apr-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;150&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;apr-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;40&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;maj-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;maj-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;80&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;maj-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;60&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jun-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;200&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jun-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;150&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jun-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;40&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jul-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;500&lt;/TD&gt;
&lt;TD&gt;1310&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jul-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;700&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jul-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;50&lt;/TD&gt;
&lt;TD&gt;360&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;aug-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;400&lt;/TD&gt;
&lt;TD&gt;1610&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;aug-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;200&lt;/TD&gt;
&lt;TD&gt;850&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;aug-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;420&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;sep-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;200&lt;/TD&gt;
&lt;TD&gt;1730&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;sep-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;890&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;sep-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;30&lt;/TD&gt;
&lt;TD&gt;420&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;okt-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;400&lt;/TD&gt;
&lt;TD&gt;2000&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;okt-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;300&lt;/TD&gt;
&lt;TD&gt;1080&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;okt-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;200&lt;/TD&gt;
&lt;TD&gt;520&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;nov-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;300&lt;/TD&gt;
&lt;TD&gt;2100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;nov-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;1030&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;nov-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;50&lt;/TD&gt;
&lt;TD&gt;530&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;dec-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;40&lt;/TD&gt;
&lt;TD&gt;2040&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;dec-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;20&lt;/TD&gt;
&lt;TD&gt;970&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;dec-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;TD&gt;480&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To simplify for you when creating the sas table:&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Period $ Segment $ Sum $ sum_rolling_6_mths $ 
;
datalines;
jan-22	 A	 100 .
jan-22	 B	 50 .
jan-22	 C	 40 .
feb-22	 A	 80 .
feb-22	 B	 60 .
feb-22	 C   30 . 
mar-22	 A	 130 .
mar-22	 B	 110 .
mar-22	 C   100 . 
apr-22	 A	 200 .
apr-22	 B	 150 .
apr-22	 C   100 .
maj-22	 A	 100 .
maj-22	 B	 80 .
maj-22	 C	 60 . 
jun-22	 A	 200 .
jun-22	 B	 150 .
jun-22	 C	 40 .
jul-22	 A	 500 1310
jul-22	 B	 100 700
jul-22	 C	 50 360
aug-22	 A	 400 1610
aug-22	 B	 200 850
aug-22	 C	 100 420
sep-22	 A	 200 1730
sep-22	 B	 100 890
sep-22	 C	 30 420
okt-22	 A	 400 2000
okt-22	 B	 300 1080
okt-22	 C	 200 520
nov-22	 A	 300 2100
nov-22	 B	 100 1030
nov-22	 C	 50 530
dec-22	 A   40 2040
dec-22	 B	 20 970
dec-22	 C   10 480
;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 04 Jan 2023 16:20:08 GMT</pubDate>
    <dc:creator>SasStatistics</dc:creator>
    <dc:date>2023-01-04T16:20:08Z</dc:date>
    <item>
      <title>Calculate a rolling/moving sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-a-rolling-moving-sum/m-p/852135#M336854</link>
      <description>&lt;P&gt;I have a dataset that contains the columns: Period, Segment and Sum.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;TABLE style="border-collapse: collapse; width: 144pt;" border="0" width="192" cellspacing="0" cellpadding="0"&gt;
&lt;TBODY&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD width="64" height="20" style="height: 15.0pt; width: 48pt;"&gt;Period&lt;/TD&gt;
&lt;TD width="64" style="width: 48pt;"&gt;Segment&lt;/TD&gt;
&lt;TD width="64" style="width: 48pt;"&gt;Sum&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jan-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jan-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;50&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jan-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;40&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;feb-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;80&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;feb-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;60&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;feb-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;30&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;mar-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;130&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;mar-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;110&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;mar-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;apr-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;200&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;apr-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;150&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;apr-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;40&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;maj-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;maj-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;80&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;maj-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;60&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jun-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;200&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jun-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;150&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jun-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;40&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jul-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;500&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jul-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jul-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;50&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;aug-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;400&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;aug-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;200&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;aug-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;sep-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;200&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;sep-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;sep-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;30&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;okt-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;400&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;okt-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;300&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;okt-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;200&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;nov-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;300&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;nov-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;nov-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;50&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;dec-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;40&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;dec-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;dec-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;10&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&lt;BR /&gt;Now I would like to create a new column that is the moving/rolling sum for each segment over the previous 6 periods.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;In total this would give me the following table:&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="414"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="50"&gt;Period&lt;/TD&gt;
&lt;TD width="62"&gt;Segment&lt;/TD&gt;
&lt;TD width="34"&gt;Sum&lt;/TD&gt;
&lt;TD width="268"&gt;summary_rolling_6months_per_segment&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jan-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jan-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;50&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jan-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;40&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;feb-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;80&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;feb-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;60&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;feb-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;30&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;mar-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;130&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;mar-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;110&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;mar-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;apr-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;200&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;apr-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;150&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;apr-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;40&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;maj-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;maj-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;80&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;maj-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;60&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jun-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;200&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jun-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;150&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jun-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;40&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jul-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;500&lt;/TD&gt;
&lt;TD&gt;1310&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jul-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;700&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jul-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;50&lt;/TD&gt;
&lt;TD&gt;360&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;aug-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;400&lt;/TD&gt;
&lt;TD&gt;1610&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;aug-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;200&lt;/TD&gt;
&lt;TD&gt;850&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;aug-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;420&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;sep-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;200&lt;/TD&gt;
&lt;TD&gt;1730&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;sep-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;890&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;sep-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;30&lt;/TD&gt;
&lt;TD&gt;420&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;okt-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;400&lt;/TD&gt;
&lt;TD&gt;2000&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;okt-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;300&lt;/TD&gt;
&lt;TD&gt;1080&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;okt-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;200&lt;/TD&gt;
&lt;TD&gt;520&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;nov-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;300&lt;/TD&gt;
&lt;TD&gt;2100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;nov-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;1030&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;nov-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;50&lt;/TD&gt;
&lt;TD&gt;530&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;dec-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;40&lt;/TD&gt;
&lt;TD&gt;2040&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;dec-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;20&lt;/TD&gt;
&lt;TD&gt;970&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;dec-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;TD&gt;480&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To simplify for you when creating the sas table:&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Period $ Segment $ Sum $ sum_rolling_6_mths $ 
;
datalines;
jan-22	 A	 100 .
jan-22	 B	 50 .
jan-22	 C	 40 .
feb-22	 A	 80 .
feb-22	 B	 60 .
feb-22	 C   30 . 
mar-22	 A	 130 .
mar-22	 B	 110 .
mar-22	 C   100 . 
apr-22	 A	 200 .
apr-22	 B	 150 .
apr-22	 C   100 .
maj-22	 A	 100 .
maj-22	 B	 80 .
maj-22	 C	 60 . 
jun-22	 A	 200 .
jun-22	 B	 150 .
jun-22	 C	 40 .
jul-22	 A	 500 1310
jul-22	 B	 100 700
jul-22	 C	 50 360
aug-22	 A	 400 1610
aug-22	 B	 200 850
aug-22	 C	 100 420
sep-22	 A	 200 1730
sep-22	 B	 100 890
sep-22	 C	 30 420
okt-22	 A	 400 2000
okt-22	 B	 300 1080
okt-22	 C	 200 520
nov-22	 A	 300 2100
nov-22	 B	 100 1030
nov-22	 C	 50 530
dec-22	 A   40 2040
dec-22	 B	 20 970
dec-22	 C   10 480
;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 04 Jan 2023 16:20:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-a-rolling-moving-sum/m-p/852135#M336854</guid>
      <dc:creator>SasStatistics</dc:creator>
      <dc:date>2023-01-04T16:20:08Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate a rolling/moving sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-a-rolling-moving-sum/m-p/852140#M336857</link>
      <description>&lt;P&gt;First, do not try to work with dates/months as character strings, because these cannot be sorted. (If you did sort them, then April would be the first month, and I'm guessing you don't want that). Work with numeric date values, as shown below in variable month. Then sort by segment and month, then compute the moving averages using PROC EXPAND (if you have a license for SAS/ETS)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Period $ Segment $ Sum;
month=input(compress(period,'-'),monyy.);
format month monyy7.;
datalines;
jan-22	 A	 100 .
jan-22	 B	 50 .
jan-22	 C	 40 .
feb-22	 A	 80 .
feb-22	 B	 60 .
feb-22	 C   30 . 
mar-22	 A	 130 .
mar-22	 B	 110 .
mar-22	 C   100 . 
apr-22	 A	 200 .
apr-22	 B	 150 .
apr-22	 C   100 .
may-22	 A	 100 .
may-22	 B	 80 .
may-22	 C	 60 . 
jun-22	 A	 200 .
jun-22	 B	 150 .
jun-22	 C	 40 .
jul-22	 A	 500 1310
jul-22	 B	 100 700
jul-22	 C	 50 360
aug-22	 A	 400 1610
aug-22	 B	 200 850
aug-22	 C	 100 420
sep-22	 A	 200 1730
sep-22	 B	 100 890
sep-22	 C	 30 420
oct-22	 A	 400 2000
oct-22	 B	 300 1080
oct-22	 C	 200 520
nov-22	 A	 300 2100
nov-22	 B	 100 1030
nov-22	 C	 50 530
dec-22	 A   40 2040
dec-22	 B	 20 970
dec-22	 C   10 480
;

proc sort data=have;
    by segment month;
run;
proc expand data=have out=want;
    by segment;
    convert sum=sum_rolling_6_mths / transformout=(movsum 6 trimleft 5);
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 04 Jan 2023 16:43:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-a-rolling-moving-sum/m-p/852140#M336857</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2023-01-04T16:43:17Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate a rolling/moving sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-a-rolling-moving-sum/m-p/852141#M336858</link>
      <description>&lt;P&gt;Does each "month" always have exactly 3 observations?&lt;/P&gt;
&lt;P&gt;Why if you want to "sum" a value are you making it character in your input statement?????&lt;/P&gt;
&lt;P&gt;How sure are you that 1310 is correct for the first Jul-22? Your data step has&lt;/P&gt;
&lt;PRE&gt;apr-22	 C   100 .&lt;/PRE&gt;
&lt;P&gt;but your "want" table has which is a different value.&lt;/P&gt;
&lt;TABLE width="414"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;apr-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;40&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;When I add the data step values for Jan through Jun I get 1780, not 1310.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;IF there are exactly 3 records for each month the following works WHEN SUM is numeric without needing any other modules. If you actually have date values then perhaps Proc Expand would do this as well.&lt;/P&gt;
&lt;PRE&gt;data want;
   set have;
   rollingsum = lag1(sum)+lag2(sum)+lag3(sum)+
                lag4(sum)+lag5(sum)+lag6(sum)+
                lag7(sum)+lag8(sum)+lag9(sum)+
                lag10(sum)+lag11(sum)+lag12(sum)+
                lag13(sum)+lag14(sum)+lag15(sum)+
                lag16(sum)+lag17(sum)+lag18(sum)
   ;
run;&lt;/PRE&gt;
&lt;P&gt;This actually takes advantage of the + operator returning missing values when any are missing. The Lag function will return missing if that number of previous record does not have a value.&lt;/P&gt;
&lt;P&gt;Caution: This assumes that the Sum variable is not ever missing. If you have missing values then you need to provide such an example.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/381436"&gt;@SasStatistics&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;I have a dataset that contains the columns: Period, Segment and Sum.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;TABLE style="border-collapse: collapse; width: 144pt;" border="0" width="192" cellspacing="0" cellpadding="0"&gt;
&lt;TBODY&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD width="64" height="20" style="height: 15.0pt; width: 48pt;"&gt;Period&lt;/TD&gt;
&lt;TD width="64" style="width: 48pt;"&gt;Segment&lt;/TD&gt;
&lt;TD width="64" style="width: 48pt;"&gt;Sum&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jan-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jan-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;50&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jan-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;40&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;feb-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;80&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;feb-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;60&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;feb-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;30&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;mar-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;130&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;mar-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;110&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;mar-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;apr-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;200&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;apr-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;150&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;apr-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;40&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;maj-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;maj-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;80&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;maj-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;60&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jun-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;200&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jun-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;150&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jun-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;40&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jul-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;500&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jul-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;jul-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;50&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;aug-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;400&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;aug-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;200&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;aug-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;sep-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;200&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;sep-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;sep-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;30&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;okt-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;400&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;okt-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;300&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;okt-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;200&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;nov-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;300&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;nov-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;nov-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;50&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;dec-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;40&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;dec-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" class="xl65" style="height: 15.0pt;"&gt;dec-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;10&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&lt;BR /&gt;Now I would like to create a new column that is the moving/rolling sum for each segment over the previous 6 periods.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;In total this would give me the following table:&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="414"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="50"&gt;Period&lt;/TD&gt;
&lt;TD width="62"&gt;Segment&lt;/TD&gt;
&lt;TD width="34"&gt;Sum&lt;/TD&gt;
&lt;TD width="268"&gt;summary_rolling_6months_per_segment&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jan-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jan-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;50&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jan-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;40&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;feb-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;80&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;feb-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;60&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;feb-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;30&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;mar-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;130&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;mar-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;110&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;mar-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;apr-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;200&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;apr-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;150&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;apr-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;40&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;maj-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;maj-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;80&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;maj-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;60&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jun-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;200&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jun-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;150&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jun-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;40&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jul-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;500&lt;/TD&gt;
&lt;TD&gt;1310&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jul-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;700&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;jul-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;50&lt;/TD&gt;
&lt;TD&gt;360&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;aug-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;400&lt;/TD&gt;
&lt;TD&gt;1610&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;aug-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;200&lt;/TD&gt;
&lt;TD&gt;850&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;aug-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;420&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;sep-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;200&lt;/TD&gt;
&lt;TD&gt;1730&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;sep-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;890&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;sep-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;30&lt;/TD&gt;
&lt;TD&gt;420&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;okt-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;400&lt;/TD&gt;
&lt;TD&gt;2000&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;okt-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;300&lt;/TD&gt;
&lt;TD&gt;1080&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;okt-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;200&lt;/TD&gt;
&lt;TD&gt;520&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;nov-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;300&lt;/TD&gt;
&lt;TD&gt;2100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;nov-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;1030&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;nov-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;50&lt;/TD&gt;
&lt;TD&gt;530&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;dec-22&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;40&lt;/TD&gt;
&lt;TD&gt;2040&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;dec-22&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;20&lt;/TD&gt;
&lt;TD&gt;970&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;dec-22&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;TD&gt;480&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To simplify for you when creating the sas table:&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Period $ Segment $ Sum $ sum_rolling_6_mths $ 
;
datalines;
jan-22	 A	 100 .
jan-22	 B	 50 .
jan-22	 C	 40 .
feb-22	 A	 80 .
feb-22	 B	 60 .
feb-22	 C   30 . 
mar-22	 A	 130 .
mar-22	 B	 110 .
mar-22	 C   100 . 
apr-22	 A	 200 .
apr-22	 B	 150 .
apr-22	 C   100 .
maj-22	 A	 100 .
maj-22	 B	 80 .
maj-22	 C	 60 . 
jun-22	 A	 200 .
jun-22	 B	 150 .
jun-22	 C	 40 .
jul-22	 A	 500 1310
jul-22	 B	 100 700
jul-22	 C	 50 360
aug-22	 A	 400 1610
aug-22	 B	 200 850
aug-22	 C	 100 420
sep-22	 A	 200 1730
sep-22	 B	 100 890
sep-22	 C	 30 420
okt-22	 A	 400 2000
okt-22	 B	 300 1080
okt-22	 C	 200 520
nov-22	 A	 300 2100
nov-22	 B	 100 1030
nov-22	 C	 50 530
dec-22	 A   40 2040
dec-22	 B	 20 970
dec-22	 C   10 480
;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 04 Jan 2023 16:52:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-a-rolling-moving-sum/m-p/852141#M336858</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2023-01-04T16:52:10Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate a rolling/moving sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-a-rolling-moving-sum/m-p/852147#M336864</link>
      <description>Unfortunately do not have the license, can I remove this as the accepted solution? (Accepted it by misstake). &lt;BR /&gt;&lt;BR /&gt;Do you know any other way?</description>
      <pubDate>Wed, 04 Jan 2023 16:53:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-a-rolling-moving-sum/m-p/852147#M336864</guid>
      <dc:creator>SasStatistics</dc:creator>
      <dc:date>2023-01-04T16:53:20Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate a rolling/moving sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-a-rolling-moving-sum/m-p/852154#M336868</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
set have;
period_sas_date = input(period, anydtdte.);
format period_sas_date monyy5.;
run;


proc sort data=have;
by segment period_sas_date;
run;

data want;
array p{0:5} _temporary_;
set have; by segment;
if first.segment then do; call missing(of p{*}); counter=0;
end;
counter+1;
p{mod(_n_,6)} = sum;
if counter &amp;gt;5 then rolling_sum = sum(of p{*});

run;

proc sort data=want;
by period_sas_date segment;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;You can use temporary arrays instead - you need to make sure you have a license for proc expand.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Are you sure the numbers shown are correct? They seem to be 7 months moving sum?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;A href="https://communities.sas.com/message/244232" target="_blank"&gt;https://communities.sas.com/message/244232&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 04 Jan 2023 17:00:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-a-rolling-moving-sum/m-p/852154#M336868</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2023-01-04T17:00:06Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate a rolling/moving sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-a-rolling-moving-sum/m-p/852155#M336869</link>
      <description>&lt;P&gt;From now on,&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/381436"&gt;@SasStatistics&lt;/a&gt;&amp;nbsp;you can leave this part out&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="PaigeMiller_0-1672851321106.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/79035iFF13DB01B55AB96D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="PaigeMiller_0-1672851321106.png" alt="PaigeMiller_0-1672851321106.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;and just provide the SAS code that contains the data. We don't use screen captures of data, we do use SAS data step code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As far as not having PROC EXPAND, searching the forums for moving average or moving sum should turn up lots of ideas, such as this:&amp;nbsp;&lt;A href="https://communities.sas.com/t5/SAS-Programming/Computing-moving-average-by-group-and-year/m-p/824977" target="_blank"&gt;https://communities.sas.com/t5/SAS-Programming/Computing-moving-average-by-group-and-year/m-p/824977&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 04 Jan 2023 16:59:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-a-rolling-moving-sum/m-p/852155#M336869</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2023-01-04T16:59:52Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate a rolling/moving sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-a-rolling-moving-sum/m-p/852757#M337063</link>
      <description>Exactly this is what I was looking for. I made an minimalistic example but I have modofied your code and use that. Thanks alot. &lt;BR /&gt;&lt;BR /&gt;One question, what is the purpose of this code: p{mod(_n_,6)} = sum; ?</description>
      <pubDate>Mon, 09 Jan 2023 11:06:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-a-rolling-moving-sum/m-p/852757#M337063</guid>
      <dc:creator>SasStatistics</dc:creator>
      <dc:date>2023-01-09T11:06:58Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate a rolling/moving sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Calculate-a-rolling-moving-sum/m-p/852819#M337083</link>
      <description>It assigns the value of the observation to the temporary array. The position in the array is determined by the row (_n_) and size of array (6). This allows each value to be uniquely placed in the array and overwritten once more than 6 are encountered.</description>
      <pubDate>Mon, 09 Jan 2023 15:21:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Calculate-a-rolling-moving-sum/m-p/852819#M337083</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2023-01-09T15:21:44Z</dc:date>
    </item>
  </channel>
</rss>

