<?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: LEFT JOIN in SAS using PROC SQL in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/LEFT-JOIN-in-SAS-using-PROC-SQL/m-p/158241#M41388</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;If you want all observations from either than do:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table want as
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COALESCE(FIRST_TABLE.ID,SECOND_TABLE.ID) as ID,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FIRST_TABLE
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; full join&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SECOND_TABLE
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FIRST_TABLE.ID=SECOND_TABLE.ID;
quit;
&amp;nbsp;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The full join means all rows from both tables are merged on id giving full list, you do need the coalesce to get id populated, as if you just take first table then it would be missing for those which appear only in second table.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Another approach from&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/462"&gt;@PGStats&lt;/a&gt;:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;You should use a CROSS JOIN to get all combinations of&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;ID&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;trading_date&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and then LEFT JOIN to your trading data :&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table joined as
select I.ID, a.trading_date as date, b.price
from
&amp;nbsp; (select unique ID from b) as I cross join
&amp;nbsp; a left join
&amp;nbsp; b on I.ID=b.ID and a.trading_date=b.date
order by ID, date;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;/BLOCKQUOTE&gt;</description>
    <pubDate>Tue, 10 Oct 2017 17:11:20 GMT</pubDate>
    <dc:creator>RW9</dc:creator>
    <dc:date>2017-10-10T17:11:20Z</dc:date>
    <item>
      <title>LEFT JOIN in SAS using PROC SQL</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/LEFT-JOIN-in-SAS-using-PROC-SQL/m-p/158240#M41387</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am new to SAS and have this basic problem. I have a list of NYSE trading dates in table A as follows -&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;trading_date &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;1st March 2012 &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;2nd March 2012 &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;3rd March 2012 &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;4th March 2012 &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;5th March 2012 &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;6th March 2012&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have another table B that has share price information as -&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;Date ID Ret Price &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;1st March 2012 1 … … &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;3rd March 2012 1 … … &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;4th March 2012 1 … … &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;5th March 2012 1 … … &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;6th March 2012 1 … … &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;1st March 2012 2 … … &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;3rd March 2012 2 … … &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;4th March 2012 2 … … &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;... has numeric data related to price and returns.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now I need to join the NYSE Data table to the above table to get the following table -&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;Date ID Ret Price &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;1st March 2012 1 … … &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;2nd March 2012 1 0 0 &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;3rd March 2012 1 … … &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;4th March 2012 1 … … &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;5th March 2012 1 … … &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;6th March 2012 1 … … &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;1st March 2012 2 … … &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;2nd March 2012 2 0 0 &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;3rd March 2012 2 … … &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;4th March 2012 2 … …&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;i.e. a simple left join. The zero's will be filled with . in SAS to indicate missing values, but you get the idea. But if I use the following command -&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
	create table joined as select table_a.trading_date, 
		table_b.* from table_a 
		LEFT OUTER join table_b
		on table_a.trading_date=table_b.date;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The join happens only for the first ID (i.e. ID=1) while for the rest of the IDs, the same data is maintained. But I need to insert the trade dates for all IDs.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;How can get the final data without running a do while loop for all IDs? I have 1000 IDs and looping and joining 1000 times is not an option due to limited memory.&lt;/P&gt;</description>
      <pubDate>Tue, 10 Oct 2017 17:08:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/LEFT-JOIN-in-SAS-using-PROC-SQL/m-p/158240#M41387</guid>
      <dc:creator>SasHelpNeeded</dc:creator>
      <dc:date>2017-10-10T17:08:58Z</dc:date>
    </item>
    <item>
      <title>Re: LEFT JOIN in SAS using PROC SQL</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/LEFT-JOIN-in-SAS-using-PROC-SQL/m-p/158241#M41388</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;If you want all observations from either than do:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table want as
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COALESCE(FIRST_TABLE.ID,SECOND_TABLE.ID) as ID,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FIRST_TABLE
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; full join&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SECOND_TABLE
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FIRST_TABLE.ID=SECOND_TABLE.ID;
quit;
&amp;nbsp;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The full join means all rows from both tables are merged on id giving full list, you do need the coalesce to get id populated, as if you just take first table then it would be missing for those which appear only in second table.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Another approach from&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/462"&gt;@PGStats&lt;/a&gt;:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;You should use a CROSS JOIN to get all combinations of&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;ID&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;trading_date&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and then LEFT JOIN to your trading data :&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table joined as
select I.ID, a.trading_date as date, b.price
from
&amp;nbsp; (select unique ID from b) as I cross join
&amp;nbsp; a left join
&amp;nbsp; b on I.ID=b.ID and a.trading_date=b.date
order by ID, date;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;/BLOCKQUOTE&gt;</description>
      <pubDate>Tue, 10 Oct 2017 17:11:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/LEFT-JOIN-in-SAS-using-PROC-SQL/m-p/158241#M41388</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2017-10-10T17:11:20Z</dc:date>
    </item>
    <item>
      <title>Re: LEFT JOIN in SAS using PROC SQL</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/LEFT-JOIN-in-SAS-using-PROC-SQL/m-p/158242#M41389</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You should use a CROSS JOIN to get all combinations of &lt;STRONG&gt;ID&lt;/STRONG&gt; and &lt;STRONG&gt;trading_date&lt;/STRONG&gt; and then LEFT JOIN to your trading data :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;proc sql;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;create table joined as&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;select I.ID, a.trading_date as date, b.price&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;from &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; (select unique ID from b) as I cross join &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; a left join&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; b on I.ID=b.ID and a.trading_date=b.date&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;order by ID, date;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;quit;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PG&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 May 2014 15:01:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/LEFT-JOIN-in-SAS-using-PROC-SQL/m-p/158242#M41389</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2014-05-14T15:01:26Z</dc:date>
    </item>
  </channel>
</rss>

