<?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: Compare dates in two tables to derive a cumulative sum in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Compare-dates-in-two-tables-to-derive-a-cumulative-sum/m-p/637530#M189497</link>
    <description>&lt;P&gt;Hmmm... other important variable... irrelevant detail.. right?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My remark about comments /*1*/ and /*2*/ is still actual:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data tableA;
input CustID Date : ddmmyy10.	Sales; 
format Date ddmmyy10.;
cards;
1 29/02/20	10
2 04/03/20	5
1 05/03/20	25
2 06/03/20	30
1 23/03/20	10
2 31/03/20	40
1 16/04/20	40
;
run;
proc sort data = tableA;
  by CustID Date;
run;
proc print;
run;
data tableB;
input CustID Date : ddmmyy10.;
format Date ddmmyy10.;
cards;
1 01/02/20
2 10/02/20
1 02/03/20
2 05/03/20
1 20/03/20
2 25/03/20
1 06/04/20
2 27/04/20
;
run;
proc sort data = tableB;
  by CustID Date;
run;
proc print;
run;

data tableC;
  set tableA tableB;
  by CustID Date;
  if first.custID then cumulative = 0;
  cumulative + Sales;
run;
proc print;
run;

proc sql;
create table tableD as
select distinct c.CustID, c.Date, 
max(c.cumulative, (select min(x.cumulative) from tableC as x where c.CustID = x.custID and x.cumulative &amp;gt; 0)) as CumulativeSales /*1*/
/* c.cumulative as CumulativeSales */ /*2*/
from tableC as c
join
tableB as b
on 
c.CustID = b.CustID
and
c.Date = b.Date
;
run;
proc print;
run; &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;All the best&lt;/P&gt;
&lt;P&gt;Bart&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sat, 04 Apr 2020 12:03:37 GMT</pubDate>
    <dc:creator>yabwon</dc:creator>
    <dc:date>2020-04-04T12:03:37Z</dc:date>
    <item>
      <title>Compare dates in two tables to derive a cumulative sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-dates-in-two-tables-to-derive-a-cumulative-sum/m-p/637521#M189491</link>
      <description>&lt;P&gt;I have two tables:-&lt;/P&gt;&lt;P&gt;Table(A)= Sales made on each date&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Table (A)&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Date&lt;/TD&gt;&lt;TD&gt;Sales&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;29/02/20&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;04/03/20&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;05/03/20&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;06/03/20&lt;/TD&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;23/03/20&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;31/03/20&lt;/TD&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;16/04/20&lt;/TD&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Table (B)&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Date&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/02/20&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10/02/20&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/03/20&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;05/03/20&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20/03/20&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;25/03/20&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;06/04/20&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;27/04/20&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now I want to compare dates of table A and dates of table B to create a cumulative sales according to dates in table (B).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is the required output:-&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Date&lt;/TD&gt;&lt;TD&gt;Cumulative Sales&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/02/20&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10/02/20&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/03/20&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;05/03/20&lt;/TD&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20/03/20&lt;/TD&gt;&lt;TD&gt;70&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;25/03/20&lt;/TD&gt;&lt;TD&gt;80&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;06/04/20&lt;/TD&gt;&lt;TD&gt;120&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;27/04/20&lt;/TD&gt;&lt;TD&gt;160&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So basically I need to add all the sales made in table A up to the date mentioned in table B, so that I have cumulative sales up to each date mentioned in table B.&lt;/P&gt;</description>
      <pubDate>Sat, 04 Apr 2020 10:28:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-dates-in-two-tables-to-derive-a-cumulative-sum/m-p/637521#M189491</guid>
      <dc:creator>Saurabh_Rana</dc:creator>
      <dc:date>2020-04-04T10:28:27Z</dc:date>
    </item>
    <item>
      <title>Re: Compare dates in two tables to derive a cumulative sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-dates-in-two-tables-to-derive-a-cumulative-sum/m-p/637522#M189492</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;seems like code below do what you need, but I have one doubt - should the cumulative for dates earlier than Feb29th be 10? or 0 since first sales is on Feb29th. In case I'm right and it should be 0 then un-comment "/*2*/" below and delete "/*1*/".&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data tableA;
input Date : ddmmyy10.	Sales; 
format Date ddmmyy10.;
cards;
29/02/20	10
04/03/20	5
05/03/20	25
06/03/20	30
23/03/20	10
31/03/20	40
16/04/20	40
;
run;
proc print;
run;
data tableB;
input Date : ddmmyy10.;
format Date ddmmyy10.;
cards;
01/02/20
10/02/20
02/03/20
05/03/20
20/03/20
25/03/20
06/04/20
27/04/20
;
run;
proc print;
run;

data tableC;
  set tableA tableB;
  by Date;
  cumulative + Sales;
run;
proc print;
run;

proc sql;
create table tableD as
select distinct c.Date, 
max(c.cumulative, (select min(cumulative) from tableC where cumulative &amp;gt; 0)) as CumulativeSales /*1*/
/* c.cumulative as CumulativeSales */ /*2*/
from tableC as c
join
tableB as b
on c.Date = b.Date
;
run;
proc print;
run; &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;All the best&lt;/P&gt;
&lt;P&gt;Bart&lt;/P&gt;</description>
      <pubDate>Sat, 04 Apr 2020 10:47:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-dates-in-two-tables-to-derive-a-cumulative-sum/m-p/637522#M189492</guid>
      <dc:creator>yabwon</dc:creator>
      <dc:date>2020-04-04T10:47:48Z</dc:date>
    </item>
    <item>
      <title>Re: Compare dates in two tables to derive a cumulative sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-dates-in-two-tables-to-derive-a-cumulative-sum/m-p/637529#M189496</link>
      <description>Actually there is another field customer_no in both the tables along side date, so I need this cumulative sales by customer and by date.</description>
      <pubDate>Sat, 04 Apr 2020 11:44:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-dates-in-two-tables-to-derive-a-cumulative-sum/m-p/637529#M189496</guid>
      <dc:creator>Saurabh_Rana</dc:creator>
      <dc:date>2020-04-04T11:44:16Z</dc:date>
    </item>
    <item>
      <title>Re: Compare dates in two tables to derive a cumulative sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-dates-in-two-tables-to-derive-a-cumulative-sum/m-p/637530#M189497</link>
      <description>&lt;P&gt;Hmmm... other important variable... irrelevant detail.. right?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My remark about comments /*1*/ and /*2*/ is still actual:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data tableA;
input CustID Date : ddmmyy10.	Sales; 
format Date ddmmyy10.;
cards;
1 29/02/20	10
2 04/03/20	5
1 05/03/20	25
2 06/03/20	30
1 23/03/20	10
2 31/03/20	40
1 16/04/20	40
;
run;
proc sort data = tableA;
  by CustID Date;
run;
proc print;
run;
data tableB;
input CustID Date : ddmmyy10.;
format Date ddmmyy10.;
cards;
1 01/02/20
2 10/02/20
1 02/03/20
2 05/03/20
1 20/03/20
2 25/03/20
1 06/04/20
2 27/04/20
;
run;
proc sort data = tableB;
  by CustID Date;
run;
proc print;
run;

data tableC;
  set tableA tableB;
  by CustID Date;
  if first.custID then cumulative = 0;
  cumulative + Sales;
run;
proc print;
run;

proc sql;
create table tableD as
select distinct c.CustID, c.Date, 
max(c.cumulative, (select min(x.cumulative) from tableC as x where c.CustID = x.custID and x.cumulative &amp;gt; 0)) as CumulativeSales /*1*/
/* c.cumulative as CumulativeSales */ /*2*/
from tableC as c
join
tableB as b
on 
c.CustID = b.CustID
and
c.Date = b.Date
;
run;
proc print;
run; &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;All the best&lt;/P&gt;
&lt;P&gt;Bart&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 04 Apr 2020 12:03:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-dates-in-two-tables-to-derive-a-cumulative-sum/m-p/637530#M189497</guid>
      <dc:creator>yabwon</dc:creator>
      <dc:date>2020-04-04T12:03:37Z</dc:date>
    </item>
    <item>
      <title>Re: Compare dates in two tables to derive a cumulative sum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-dates-in-two-tables-to-derive-a-cumulative-sum/m-p/637644#M189541</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/316224"&gt;@Saurabh_Rana&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;I have two tables:-&lt;/P&gt;
&lt;P&gt;Table(A)= Sales made on each date&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Table (A)&lt;/P&gt;
&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;Date&lt;/TD&gt;
&lt;TD&gt;Sales&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;29/02/20&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;04/03/20&lt;/TD&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;05/03/20&lt;/TD&gt;
&lt;TD&gt;25&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;06/03/20&lt;/TD&gt;
&lt;TD&gt;30&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;23/03/20&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;31/03/20&lt;/TD&gt;
&lt;TD&gt;40&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;16/04/20&lt;/TD&gt;
&lt;TD&gt;40&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Table (B)&lt;/P&gt;
&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;Date&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;01/02/20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/02/20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;02/03/20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;05/03/20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20/03/20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;25/03/20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;06/04/20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;27/04/20&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now I want to compare dates of table A and dates of table B to create a cumulative sales according to dates in table (B).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This is the required output:-&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;Date&lt;/TD&gt;
&lt;TD&gt;Cumulative Sales&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;01/02/20&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/02/20&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;02/03/20&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;05/03/20&lt;/TD&gt;
&lt;TD&gt;40&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20/03/20&lt;/TD&gt;
&lt;TD&gt;70&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;25/03/20&lt;/TD&gt;
&lt;TD&gt;80&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;06/04/20&lt;/TD&gt;
&lt;TD&gt;120&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;27/04/20&lt;/TD&gt;
&lt;TD&gt;160&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So basically I need to add all the sales made in table A up to the date mentioned in table B, so that I have cumulative sales up to each date mentioned in table B.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Your first sale in table a is on Feb 29, 2020.&amp;nbsp; So why do you have to show cumulative sales of 10 for the first 2 output records (Feb 1 and Feb 10 of 2020)?&amp;nbsp; Assuming that's an error, then:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data A;
input date : ddmmyy10.	sales; 
format date ddmmyy10.;
datalines;
29/02/20	10
04/03/20	5
05/03/20	25
06/03/20	30
23/03/20	10
31/03/20	40
16/04/20	40
run;
data B;
input date : ddmmyy10.;
format date ddmmyy10.;
datalines;
01/02/20
10/02/20
02/03/20
05/03/20
20/03/20
25/03/20
06/04/20
27/04/20
run;
data want (drop=sales);
  set a (in=ina)    b (in=inb);
  by date;
  if ina then cum_sales+sales;
  if inb;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 05 Apr 2020 03:31:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-dates-in-two-tables-to-derive-a-cumulative-sum/m-p/637644#M189541</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2020-04-05T03:31:36Z</dc:date>
    </item>
  </channel>
</rss>

