<?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: Join two tables with latest available data in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Join-two-tables-with-latest-available-data/m-p/667719#M200017</link>
    <description>&lt;P&gt;An easy way assumes both data sets are sorted by DATE:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
   set exchange_rate (in=new_rate)  sales (in=keepme);
   by date;
   retain latest_rate;
   if new_rate then latest_rate = exchange_rate;
   if keepme;
   exchange_rate = latest_rate;
   drop latest_rate;
run;
   &lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 08 Jul 2020 14:06:51 GMT</pubDate>
    <dc:creator>Astounding</dc:creator>
    <dc:date>2020-07-08T14:06:51Z</dc:date>
    <item>
      <title>Join two tables with latest available data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Join-two-tables-with-latest-available-data/m-p/667716#M200015</link>
      <description>&lt;P&gt;Dear Experts,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I will have to join two tables. Table 1 contains information about sales in NOK, and Table 2 contains information on Exchange rates. I will have to join the table to get the appropriate exchange rate to the sales table. Exchange rate table does not contain rates for weekends and holidays. So we will have to use the latest available rate for weekends and Holidays. This process going to be performed in very large tables.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Sales table&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Date&lt;/TD&gt;&lt;TD&gt;Value&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2020&lt;/TD&gt;&lt;TD&gt;652&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/01/2020&lt;/TD&gt;&lt;TD&gt;325&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/01/2020&lt;/TD&gt;&lt;TD&gt;632&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;04/01/2020&lt;/TD&gt;&lt;TD&gt;256&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;05/01/2020&lt;/TD&gt;&lt;TD&gt;852&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;06/01/2020&lt;/TD&gt;&lt;TD&gt;369&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;07/01/2020&lt;/TD&gt;&lt;TD&gt;999&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;08/01/2020&lt;/TD&gt;&lt;TD&gt;875&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Exchange rate table&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Date&lt;/TD&gt;&lt;TD&gt;Exchange rate&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2020&lt;/TD&gt;&lt;TD&gt;0.6589&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/01/2020&lt;/TD&gt;&lt;TD&gt;0.6583&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/01/2020&lt;/TD&gt;&lt;TD&gt;0.7412&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;04/01/2020&lt;/TD&gt;&lt;TD&gt;0.9875&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;05/01/2020&lt;/TD&gt;&lt;TD&gt;0.9632&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;08/01/2020&lt;/TD&gt;&lt;TD&gt;0.9873&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;09/01/2020&lt;/TD&gt;&lt;TD&gt;0.9345&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10/01/2020&lt;/TD&gt;&lt;TD&gt;0.6322&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Desired Results:&lt;/P&gt;&lt;P&gt;Joined table&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Date&lt;/TD&gt;&lt;TD&gt;Value&lt;/TD&gt;&lt;TD&gt;Exchange rate&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2020&lt;/TD&gt;&lt;TD&gt;652&lt;/TD&gt;&lt;TD&gt;0.6589&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/01/2020&lt;/TD&gt;&lt;TD&gt;325&lt;/TD&gt;&lt;TD&gt;0.6583&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/01/2020&lt;/TD&gt;&lt;TD&gt;632&lt;/TD&gt;&lt;TD&gt;0.7412&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;04/01/2020&lt;/TD&gt;&lt;TD&gt;256&lt;/TD&gt;&lt;TD&gt;0.9875&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;05/01/2020&lt;/TD&gt;&lt;TD&gt;852&lt;/TD&gt;&lt;TD&gt;0.9632&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;06/01/2020&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;369&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;0.9632&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;07/01/2020&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;999&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;0.9632&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;08/01/2020&lt;/TD&gt;&lt;TD&gt;875&lt;/TD&gt;&lt;TD&gt;0.9873&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you in advance for your help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Myu&lt;/P&gt;</description>
      <pubDate>Wed, 08 Jul 2020 13:51:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Join-two-tables-with-latest-available-data/m-p/667716#M200015</guid>
      <dc:creator>Myurathan</dc:creator>
      <dc:date>2020-07-08T13:51:02Z</dc:date>
    </item>
    <item>
      <title>Re: Join two tables with latest available data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Join-two-tables-with-latest-available-data/m-p/667718#M200016</link>
      <description>&lt;P&gt;HI&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/175837"&gt;@Myurathan&lt;/a&gt;&amp;nbsp; Please try if you like-&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data sales;
input Date :ddmmyy10.	Value;
format date ddmmyy10.;
cards;
01/01/2020	652
02/01/2020	325
03/01/2020	632
04/01/2020	256
05/01/2020	852
06/01/2020	369
07/01/2020	999
08/01/2020	875
;

data Exchange_rate;
input Date  :ddmmyy10.	Exchange_rate;
format date ddmmyy10.;
cards;
01/01/2020	0.6589
02/01/2020	0.6583
03/01/2020	0.7412
04/01/2020	0.9875
05/01/2020	0.9632
08/01/2020	0.9873
09/01/2020	0.9345
10/01/2020	0.6322
;

data want ;
 if _n_=1 then do;
   if 0 then set sales Exchange_rate;
   dcl hash H (dataset:'Exchange_rate') ;
   h.definekey  ("date") ;
   h.definedata ("Exchange_rate") ;
   h.definedone () ;
 end;
 set sales;
 _iorc_=h.find();
run;

&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;Since your dataset sales is sorted by "date". It's very straight forward.&lt;/P&gt;</description>
      <pubDate>Wed, 08 Jul 2020 14:04:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Join-two-tables-with-latest-available-data/m-p/667718#M200016</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2020-07-08T14:04:15Z</dc:date>
    </item>
    <item>
      <title>Re: Join two tables with latest available data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Join-two-tables-with-latest-available-data/m-p/667719#M200017</link>
      <description>&lt;P&gt;An easy way assumes both data sets are sorted by DATE:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
   set exchange_rate (in=new_rate)  sales (in=keepme);
   by date;
   retain latest_rate;
   if new_rate then latest_rate = exchange_rate;
   if keepme;
   exchange_rate = latest_rate;
   drop latest_rate;
run;
   &lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 08 Jul 2020 14:06:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Join-two-tables-with-latest-available-data/m-p/667719#M200017</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2020-07-08T14:06:51Z</dc:date>
    </item>
    <item>
      <title>Re: Join two tables with latest available data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Join-two-tables-with-latest-available-data/m-p/667722#M200019</link>
      <description>&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt;. Thank you so much for your quick reply.&lt;BR /&gt;&lt;BR /&gt;How would I have to use one more variable (Currency) to join in your code?&lt;BR /&gt;EX: Sales table has a currency column and Exchange rate table also have a current column.&lt;BR /&gt;&lt;BR /&gt;Cheers.&lt;BR /&gt;</description>
      <pubDate>Wed, 08 Jul 2020 14:32:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Join-two-tables-with-latest-available-data/m-p/667722#M200019</guid>
      <dc:creator>Myurathan</dc:creator>
      <dc:date>2020-07-08T14:32:27Z</dc:date>
    </item>
    <item>
      <title>Re: Join two tables with latest available data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Join-two-tables-with-latest-available-data/m-p/667731#M200027</link>
      <description>Thank you so much for your help.</description>
      <pubDate>Wed, 08 Jul 2020 14:52:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Join-two-tables-with-latest-available-data/m-p/667731#M200027</guid>
      <dc:creator>Myurathan</dc:creator>
      <dc:date>2020-07-08T14:52:05Z</dc:date>
    </item>
    <item>
      <title>Re: Join two tables with latest available data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Join-two-tables-with-latest-available-data/m-p/667732#M200028</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/175837"&gt;@Myurathan&lt;/a&gt;&amp;nbsp;, You could add the variables to definedata list from the exchange table&lt;/P&gt;
&lt;PRE class="language-sas"&gt;&lt;CODE&gt; h.definedata ("Exchange_rate") ;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Set sales;&lt;/P&gt;
&lt;P&gt;would anyway read all the variables from sales table.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/4954"&gt;@Astounding&lt;/a&gt;&amp;nbsp;'s merge is perhaps much easier to understand and manage. If I am unfamiliar with Hashing, I wouldn't bother though this particular task is very simple albeit can become problematic later when queries become complex. Nonetheless, I will leave that up to you&lt;/P&gt;</description>
      <pubDate>Wed, 08 Jul 2020 14:52:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Join-two-tables-with-latest-available-data/m-p/667732#M200028</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2020-07-08T14:52:25Z</dc:date>
    </item>
  </channel>
</rss>

