<?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: Proc SQL &amp; Data Step INNER JOIN... in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-Data-Step-INNER-JOIN/m-p/95284#M20057</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, I would like to have only the rows that match (by Cusip) across the two tables.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I read this one &lt;A class="active_link" href="http://www2.sas.com/proceedings/forum2008/178-2008.pdf" title="http://www2.sas.com/proceedings/forum2008/178-2008.pdf"&gt;http://www2.sas.com/proceedings/forum2008/178-2008.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sorry I'm still a bit lost.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The paper above says that the following codes are exactly 100% the same. And I know that Proc SQL with INNER JOIN statement is the same as the WHERE statement.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: #ff0000;"&gt;proc sql;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table inner_sql as&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.transaction&lt;/P&gt;&lt;P&gt;&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; , b.item_id&lt;/P&gt;&lt;P&gt;&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; , b.qty&lt;/P&gt;&lt;P&gt;&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; , b.date&lt;/P&gt;&lt;P&gt;&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; , a.sales_id&lt;/P&gt;&lt;P&gt;&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; , a.name&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f&lt;EM&gt;&lt;STRONG&gt;rom sales b, &lt;/STRONG&gt;&lt;/EM&gt;&lt;EM&gt;&lt;STRONG&gt;salesperson a&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;&lt;SPAN style="color: #ff0000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where&lt;/SPAN&gt; a.sales_id = b.sales_id&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; order by sales_id;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data inner_join;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; merge sales ( in = s )&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; salesperson ( in = p );&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by sales_id;&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if s and p;&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My codes in the original post return different matches, no matter whether I use INNER JOIN or WHERE statement in the Proc SQL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data merged;&lt;/P&gt;&lt;P&gt;588&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #ff0000;"&gt;merge y1999_ (in=a) cusip (in=b);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;589&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by cusip;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;590&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if a &amp;amp; b;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;591&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;NOTE: MERGE statement has more than one data set with repeats of BY values.&lt;/P&gt;&lt;P&gt;NOTE: There were 4857105 observations read from the data set WORK.Y1999_.&lt;/P&gt;&lt;P&gt;NOTE: There were 88319 observations read from the data set WORK.CUSIP.&lt;/P&gt;&lt;P&gt;NOTE: The data set WORK.MERGED has &lt;SPAN style="color: #ff0000;"&gt;3789859&lt;/SPAN&gt; observations and 14 variables.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql feedback;&lt;/P&gt;&lt;P&gt;593&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table merged as&lt;/P&gt;&lt;P&gt;594&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select a.*&lt;/P&gt;&lt;P&gt;595&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from y1999_ as a, cusip as b&lt;/P&gt;&lt;P&gt;596&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #ff0000;"&gt;where&lt;/SPAN&gt; a.cusip=b.cusip&lt;/P&gt;&lt;P&gt;597&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;NOTE: Table WORK.MERGED created, with &lt;SPAN style="color: #ff0000;"&gt;17955067&lt;/SPAN&gt; rows and 14 columns.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sorry for this inconvenience but I'm a bit lost actually.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 15 Oct 2012 22:23:22 GMT</pubDate>
    <dc:creator>smilingmelbourne</dc:creator>
    <dc:date>2012-10-15T22:23:22Z</dc:date>
    <item>
      <title>Proc SQL &amp; Data Step INNER JOIN...</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-Data-Step-INNER-JOIN/m-p/95279#M20052</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I guess these codes should be exactly the same; however, the SAS log tells otherwise! It doesn't really make sense to me how the error arises.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/* CODES */&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;data merged;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; merge y1999_ (in=a) cusip (in=b);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #ff0000;"&gt;by cusip;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if a &amp;amp; b;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql feedback;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table merged as&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select a.*&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from y1999_ as a &lt;SPAN style="color: #ff0000;"&gt;INNER JOIN&lt;/SPAN&gt; cusip as b&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #ff0000;"&gt;on a.cusip=b.cusip&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/* SAS LOGS Tell Otherwise */&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;/* For 1st code */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;565&amp;nbsp; data merged;&lt;/P&gt;&lt;P&gt;566&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; merge y1999_ (in=a) cusip (in=b);&lt;/P&gt;&lt;P&gt;567&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by cusip;&lt;/P&gt;&lt;P&gt;568&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if a &amp;amp; b;&lt;/P&gt;&lt;P&gt;569&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;NOTE: MERGE statement has more than one data set with repeats of BY values.&lt;/P&gt;&lt;P&gt;NOTE: There were 4857105 observations read from the data set WORK.Y1999_.&lt;/P&gt;&lt;P&gt;NOTE: There were 88319 observations read from the data set WORK.CUSIP.&lt;/P&gt;&lt;P&gt;NOTE: The data set WORK.MERGED has &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;3789859&lt;/STRONG&gt;&lt;/SPAN&gt; observations and 14 variables.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;/* For 2nd code */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;570&amp;nbsp; proc sql feedback;&lt;/P&gt;&lt;P&gt;571&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table merged as&lt;/P&gt;&lt;P&gt;572&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select a.*&lt;/P&gt;&lt;P&gt;573&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from y1999_ as a INNER JOIN cusip as b&lt;/P&gt;&lt;P&gt;574&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on a.cusip=b.cusip&lt;/P&gt;&lt;P&gt;575&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;NOTE: Statement transforms to:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select ....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from WORK.Y1999_ A inner join WORK.CUSIP B on A.cusip = B.CUSIP;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;NOTE: Table WORK.MERGED created, with &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;17955067&lt;/STRONG&gt;&lt;/SPAN&gt; rows and 14 columns.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I guess they should be the same, right? It's an inner join that keep only observations that share the same BY variable from both data sets.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I find this a mystery, and just can't figure out why. Can you please help? Thanks a lot&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Oct 2012 05:34:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-Data-Step-INNER-JOIN/m-p/95279#M20052</guid>
      <dc:creator>smilingmelbourne</dc:creator>
      <dc:date>2012-10-15T05:34:57Z</dc:date>
    </item>
    <item>
      <title>Re: Proc SQL &amp; Data Step INNER JOIN...</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-Data-Step-INNER-JOIN/m-p/95280#M20053</link>
      <description>&lt;P&gt;&lt;EM&gt;Editor's Note: In addition to the many resources listed below, I'm adding this video tutorial. At just under 7 minutes, it walks you through the steps of merging data sets in SAS using PROC SQL:&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;div class="video-embed-center video-embed"&gt;&lt;iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fdhf747bz_nE%3Flist%3DPLVV6eZFA22QwrXd6nSDU18E6XgXSMOs87&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Ddhf747bz_nE&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fdhf747bz_nE%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" width="400" height="225" scrolling="no" title="SAS Tutorial | Merging Data Sets in SAS using SQL" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DATA&amp;nbsp;step merge and SQL join handles duplicate key values differently, which is described and discussed thoroughly, both in documentation, papers and forums. &amp;nbsp;I think that SQL is more predictable, creating a product of rows, as opposed to the data step line-by-line matching.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Resources via&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13868"&gt;@AhmedAl_Attar&lt;/a&gt;:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Many-to-Many data step merges have been discussed before and several approaches and solutions have been presented in previous years. Here are few samples&lt;/P&gt;
&lt;P&gt;&lt;A class="active_link" title="http://www2.sas.com/proceedings/forum2008/081-2008.pdf" href="http://www2.sas.com/proceedings/forum2008/081-2008.pdf" target="_blank" rel="nofollow noopener noreferrer"&gt;http://www2.sas.com/proceedings/forum2008/081-2008&lt;WBR /&gt;.pdf&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="http://support.sas.com/resources/papers/proceedings09/071-2009.pdf" href="http://support.sas.com/resources/papers/proceedings09/071-2009.pdf" target="_blank" rel="nofollow noopener noreferrer"&gt;http://support.sas.com/resources/papers/proceeding&lt;WBR /&gt;s09/071-2009.pdf&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="active_link" title="http://www.lexjansen.com/pharmasug/2011/tu/pharmasug-2011-tu05.pdf" href="http://www.lexjansen.com/pharmasug/2011/tu/pharmasug-2011-tu05.pdf" target="_blank" rel="nofollow noopener noreferrer"&gt;http://www.lexjansen.com/pharmasug/2011/tu/pharmas&lt;WBR /&gt;ug-2011-tu05.pdf&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title="http://support.sas.com/resources/papers/proceedings09/071-2009.pdf" href="http://support.sas.com/resources/papers/proceedings09/071-2009.pdf" target="_blank" rel="nofollow noopener noreferrer"&gt;http://support.sas.com/resources/papers/proceeding&lt;WBR /&gt;s09/071-2009.pdf&lt;/A&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;From&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/4954"&gt;@Astounding&lt;/a&gt;:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;MERGE statement has more than one data set with repeats of BY values.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This is telling you that the same CUSIP appears multiple times in both incoming tables.&amp;nbsp; Are you expecting that to happen?&amp;nbsp; When it does happen, what is the proper outcome?&amp;nbsp; It's true and documented (as LinusH mentioned) that JOIN vs. MERGE handle this situation differently, but it is up to you to design the proper outcome before selecting the tool that will generate that outcome.&amp;nbsp; There are a few possible answers you might come up with, so if you post your decision you'll find there are plenty of people who could suggest a solution.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;</description>
      <pubDate>Tue, 06 Aug 2019 20:21:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-Data-Step-INNER-JOIN/m-p/95280#M20053</guid>
      <dc:creator>LinusH</dc:creator>
      <dc:date>2019-08-06T20:21:33Z</dc:date>
    </item>
    <item>
      <title>Re: Proc SQL &amp; Data Step INNER JOIN...</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-Data-Step-INNER-JOIN/m-p/95281#M20054</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The key message here is this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MERGE statement has more than one data set with repeats of BY values.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is telling you that the same CUSIP appears multiple times in both incoming tables.&amp;nbsp; Are you expecting that to happen?&amp;nbsp; When it does happen, what is the proper outcome?&amp;nbsp; It's true and documented (as LinusH mentioned) that JOIN vs. MERGE handle this situation differently, but it is up to you to design the proper outcome before selecting the tool that will generate that outcome.&amp;nbsp; There are a few possible answers you might come up with, so if you post your decision you'll find there are plenty of people who could suggest a solution.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good luck.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Oct 2012 13:03:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-Data-Step-INNER-JOIN/m-p/95281#M20054</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2012-10-15T13:03:59Z</dc:date>
    </item>
    <item>
      <title>Re: Proc SQL &amp; Data Step INNER JOIN...</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-Data-Step-INNER-JOIN/m-p/95282#M20055</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;OK, the short answer is: (in your setting)&lt;/P&gt;&lt;P&gt;if it is a ONE to ONE or ONE to MANY, then datastep merge is equivalent to Proc SQL inner join in term of results. Otherwise, it is NOT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Oct 2012 13:11:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-Data-Step-INNER-JOIN/m-p/95282#M20055</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2012-10-15T13:11:24Z</dc:date>
    </item>
    <item>
      <title>Re: Proc SQL &amp; Data Step INNER JOIN...</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-Data-Step-INNER-JOIN/m-p/95283#M20056</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;@&lt;SPAN class="j-post-author"&gt;&lt;STRONG&gt;&lt;A _jive_internal="true" class="jiveTT-hover-user jive-username-link active_link" data-avatarid="1132" data-externalid="" data-presence="null" data-userid="670228" data-username="smilingmelbourne" href="https://communities.sas.com/people/smilingmelbourne" id="jive-67022850793952370028803"&gt;smilingmelbourne&lt;/A&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Many-to-Many data step merges have been discussed before and several approaches and solutions have been presented in previous years. Here are few samples&lt;/P&gt;&lt;P&gt;&lt;A class="active_link" href="http://www2.sas.com/proceedings/forum2008/081-2008.pdf" title="http://www2.sas.com/proceedings/forum2008/081-2008.pdf"&gt;http://www2.sas.com/proceedings/forum2008/081-2008.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/resources/papers/proceedings09/071-2009.pdf" title="http://support.sas.com/resources/papers/proceedings09/071-2009.pdf"&gt;http://support.sas.com/resources/papers/proceedings09/071-2009.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="active_link" href="http://www.lexjansen.com/pharmasug/2011/tu/pharmasug-2011-tu05.pdf" title="http://www.lexjansen.com/pharmasug/2011/tu/pharmasug-2011-tu05.pdf"&gt;http://www.lexjansen.com/pharmasug/2011/tu/pharmasug-2011-tu05.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/resources/papers/proceedings09/071-2009.pdf" title="http://support.sas.com/resources/papers/proceedings09/071-2009.pdf"&gt;http://support.sas.com/resources/papers/proceedings09/071-2009.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this helps,&lt;/P&gt;&lt;P&gt;Ahmed&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Oct 2012 13:18:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-Data-Step-INNER-JOIN/m-p/95283#M20056</guid>
      <dc:creator>AhmedAl_Attar</dc:creator>
      <dc:date>2012-10-15T13:18:54Z</dc:date>
    </item>
    <item>
      <title>Re: Proc SQL &amp; Data Step INNER JOIN...</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-Data-Step-INNER-JOIN/m-p/95284#M20057</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, I would like to have only the rows that match (by Cusip) across the two tables.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I read this one &lt;A class="active_link" href="http://www2.sas.com/proceedings/forum2008/178-2008.pdf" title="http://www2.sas.com/proceedings/forum2008/178-2008.pdf"&gt;http://www2.sas.com/proceedings/forum2008/178-2008.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sorry I'm still a bit lost.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The paper above says that the following codes are exactly 100% the same. And I know that Proc SQL with INNER JOIN statement is the same as the WHERE statement.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: #ff0000;"&gt;proc sql;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table inner_sql as&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.transaction&lt;/P&gt;&lt;P&gt;&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; , b.item_id&lt;/P&gt;&lt;P&gt;&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; , b.qty&lt;/P&gt;&lt;P&gt;&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; , b.date&lt;/P&gt;&lt;P&gt;&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; , a.sales_id&lt;/P&gt;&lt;P&gt;&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; , a.name&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f&lt;EM&gt;&lt;STRONG&gt;rom sales b, &lt;/STRONG&gt;&lt;/EM&gt;&lt;EM&gt;&lt;STRONG&gt;salesperson a&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;&lt;SPAN style="color: #ff0000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where&lt;/SPAN&gt; a.sales_id = b.sales_id&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; order by sales_id;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data inner_join;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; merge sales ( in = s )&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; salesperson ( in = p );&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by sales_id;&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if s and p;&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My codes in the original post return different matches, no matter whether I use INNER JOIN or WHERE statement in the Proc SQL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data merged;&lt;/P&gt;&lt;P&gt;588&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #ff0000;"&gt;merge y1999_ (in=a) cusip (in=b);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;589&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by cusip;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;590&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if a &amp;amp; b;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;591&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;NOTE: MERGE statement has more than one data set with repeats of BY values.&lt;/P&gt;&lt;P&gt;NOTE: There were 4857105 observations read from the data set WORK.Y1999_.&lt;/P&gt;&lt;P&gt;NOTE: There were 88319 observations read from the data set WORK.CUSIP.&lt;/P&gt;&lt;P&gt;NOTE: The data set WORK.MERGED has &lt;SPAN style="color: #ff0000;"&gt;3789859&lt;/SPAN&gt; observations and 14 variables.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql feedback;&lt;/P&gt;&lt;P&gt;593&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table merged as&lt;/P&gt;&lt;P&gt;594&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select a.*&lt;/P&gt;&lt;P&gt;595&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from y1999_ as a, cusip as b&lt;/P&gt;&lt;P&gt;596&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #ff0000;"&gt;where&lt;/SPAN&gt; a.cusip=b.cusip&lt;/P&gt;&lt;P&gt;597&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;NOTE: Table WORK.MERGED created, with &lt;SPAN style="color: #ff0000;"&gt;17955067&lt;/SPAN&gt; rows and 14 columns.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sorry for this inconvenience but I'm a bit lost actually.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Oct 2012 22:23:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-Data-Step-INNER-JOIN/m-p/95284#M20057</guid>
      <dc:creator>smilingmelbourne</dc:creator>
      <dc:date>2012-10-15T22:23:22Z</dc:date>
    </item>
    <item>
      <title>Re: Proc SQL &amp; Data Step INNER JOIN...</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-Data-Step-INNER-JOIN/m-p/95285#M20058</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;From the names of you datasets I would expect that the CUSPID dataset would have only unique values of CUSPID. Your log says this is not true.&lt;/P&gt;&lt;P&gt;Is there something wrong with your CUSPID dataset that is causing it to have duplicate ids?&lt;/P&gt;&lt;P&gt;When you have two customers with the same ID how do you want to match them to the sales?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 16 Oct 2012 01:11:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-Data-Step-INNER-JOIN/m-p/95285#M20058</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2012-10-16T01:11:30Z</dc:date>
    </item>
    <item>
      <title>Re: Proc SQL &amp; Data Step INNER JOIN...</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-Data-Step-INNER-JOIN/m-p/95286#M20059</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here's an example of the situation you are facing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Table A:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CUSIP&amp;nbsp;&amp;nbsp; Amount&lt;/P&gt;&lt;P&gt;123&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 52&lt;/P&gt;&lt;P&gt;123&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 95&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Table B:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CUSIP&amp;nbsp;&amp;nbsp;&amp;nbsp; Rating&lt;/P&gt;&lt;P&gt;123&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AAA&lt;/P&gt;&lt;P&gt;123&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AA+&lt;/P&gt;&lt;P&gt;123&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AA-&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now when these two tables are joined by matching on CUSIP, what should the resulting table look like?&amp;nbsp; No programming statements at this point, just sketch out the result you are hoping to achieve. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 16 Oct 2012 01:36:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-Data-Step-INNER-JOIN/m-p/95286#M20059</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2012-10-16T01:36:10Z</dc:date>
    </item>
  </channel>
</rss>

