<?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 merge and find mismatch in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-merge-and-find-mismatch/m-p/228960#M41384</link>
    <description>&lt;P&gt;Here's the output for each of the four PROC SQL statements:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV style="margin-left: 50px;"&gt;
&lt;TABLE width="357"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD colspan="5" width="357"&gt;
&lt;P&gt;&lt;STRONG&gt;Table_A_Not_B&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR bgcolor="#B0E0E6"&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Obs&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Code&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Test&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;&lt;STRONG&gt;Value&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="71"&gt;
&lt;P&gt;&lt;STRONG&gt;seq_num&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1001&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;ABCD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;Above_average&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="71"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;2&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1001&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;ABCD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;Average&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="71"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD colspan="5" width="357"&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD colspan="5" width="357"&gt;
&lt;P&gt;&lt;STRONG&gt;Table_B_Not_A&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR bgcolor="#B0E0E6"&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Obs&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Code&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Test&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;&lt;STRONG&gt;Value1&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="71"&gt;
&lt;P&gt;&lt;STRONG&gt;seq_num&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1001&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;ABCD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;Below_average&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="71"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="449"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD colspan="6" width="449"&gt;
&lt;P&gt;&lt;STRONG&gt;Want_Side_by_Side&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR bgcolor="#B0E0E6"&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Obs&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Code&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Test&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;&lt;STRONG&gt;Value&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="99"&gt;
&lt;P&gt;&lt;STRONG&gt;Value1&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;seq_num&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1001&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;ABCD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;Above_average&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="99"&gt;
&lt;P&gt;Below_average&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;2&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1001&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;ABCD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;Average&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="99"&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="385"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD colspan="5" width="385"&gt;
&lt;P&gt;&lt;STRONG&gt;Want_Stacked&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR bgcolor="#B0E0E6"&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Obs&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Code&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Test&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;&lt;STRONG&gt;Value&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="99"&gt;
&lt;P&gt;&lt;STRONG&gt;Row_Source&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1001&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;ABCD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;Above_average&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="99"&gt;
&lt;P&gt;Table_A_Not_B&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;2&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1001&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;ABCD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;Average&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="99"&gt;
&lt;P&gt;Table_A_Not_B&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;3&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1001&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;ABCD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;Below_average&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="99"&gt;
&lt;P&gt;Table_B_Not_A&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 07 Oct 2015 18:40:12 GMT</pubDate>
    <dc:creator>hbi</dc:creator>
    <dc:date>2015-10-07T18:40:12Z</dc:date>
    <item>
      <title>Proc SQL merge and find mismatch</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-merge-and-find-mismatch/m-p/228945#M41376</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to find the exact mismatch and missing values from the&amp;nbsp;below&amp;nbsp;Tables A and B&amp;nbsp;by using Proc SQL procedure, Can anyone help me please?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Table A&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Code&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Test&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Value&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1001&lt;/TD&gt;&lt;TD&gt;ABCD&lt;/TD&gt;&lt;TD&gt;Good&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1001&lt;/TD&gt;&lt;TD&gt;ABCD&lt;/TD&gt;&lt;TD&gt;Bad&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1001&lt;/TD&gt;&lt;TD&gt;ABCD&lt;/TD&gt;&lt;TD&gt;Above average&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1001&lt;/TD&gt;&lt;TD&gt;ABCD&lt;/TD&gt;&lt;TD&gt;Average&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&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Code&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Test&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Value1&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1001&lt;/TD&gt;&lt;TD&gt;ABCD&lt;/TD&gt;&lt;TD&gt;Bad&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1001&lt;/TD&gt;&lt;TD&gt;ABCD&lt;/TD&gt;&lt;TD&gt;Good&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1001&lt;/TD&gt;&lt;TD&gt;ABCD&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1001&lt;/TD&gt;&lt;TD&gt;ABCD&lt;/TD&gt;&lt;TD&gt;Below average&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Expected output:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Code&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Test&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Value&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Value1&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1001&lt;/TD&gt;&lt;TD&gt;ABCD&lt;/TD&gt;&lt;TD&gt;Above average&lt;/TD&gt;&lt;TD&gt;Below average&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1001&lt;/TD&gt;&lt;TD&gt;ABCD&lt;/TD&gt;&lt;TD&gt;Average&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Abin&lt;/P&gt;</description>
      <pubDate>Wed, 07 Oct 2015 17:37:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-merge-and-find-mismatch/m-p/228945#M41376</guid>
      <dc:creator>Abin</dc:creator>
      <dc:date>2015-10-07T17:37:10Z</dc:date>
    </item>
    <item>
      <title>Re: Proc SQL merge and find mismatch</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-merge-and-find-mismatch/m-p/228946#M41377</link>
      <description>&lt;P&gt;How are we supposed to know that "Below Average" is the mismatch for "Above average" and not Average?&lt;/P&gt;
&lt;P&gt;That this is NOT the desired result?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;STRONG&gt;Code&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;Test&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;Value&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;Value1&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1001&lt;/TD&gt;
&lt;TD&gt;ABCD&lt;/TD&gt;
&lt;TD&gt;Above average&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1001&lt;/TD&gt;
&lt;TD&gt;ABCD&lt;/TD&gt;
&lt;TD&gt;Average&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;Below average&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You might want to provide a bit more data and possbily with more Code and Test values as currently we don't know if there are any and solutions if ALL of Code = 1001 and All of Test=ABCD may not work if there are others involved.&lt;/P&gt;</description>
      <pubDate>Wed, 07 Oct 2015 17:44:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-merge-and-find-mismatch/m-p/228946#M41377</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2015-10-07T17:44:07Z</dc:date>
    </item>
    <item>
      <title>Re: Proc SQL merge and find mismatch</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-merge-and-find-mismatch/m-p/228951#M41379</link>
      <description>&lt;P&gt;Thank you Ballardw!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Yes, its also possible!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;But i don't want to see somehitng like&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Code&lt;/TD&gt;&lt;TD&gt;Test&lt;/TD&gt;&lt;TD&gt;Value&lt;/TD&gt;&lt;TD&gt;Value1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1001&lt;/TD&gt;&lt;TD&gt;ABCD&lt;/TD&gt;&lt;TD&gt;good&lt;/TD&gt;&lt;TD&gt;Bad&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1001&lt;/TD&gt;&lt;TD&gt;ABCD&lt;/TD&gt;&lt;TD&gt;Bad&lt;/TD&gt;&lt;TD&gt;good&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Wed, 07 Oct 2015 17:55:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-merge-and-find-mismatch/m-p/228951#M41379</guid>
      <dc:creator>Abin</dc:creator>
      <dc:date>2015-10-07T17:55:00Z</dc:date>
    </item>
    <item>
      <title>Re: Proc SQL merge and find mismatch</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-merge-and-find-mismatch/m-p/228954#M41381</link>
      <description>&lt;P&gt;I suggest to list the mismatches in the following way:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
title "Unmatched values";
proc sql;
select "A" as from, a.Code, a.Test, a.Value
from a left join b 
    on a.code=b.code and a.test=b.test and a.value=b.value
where b.value is missing
union all
select "B" as from, b.Code, b.Test, b.Value
from a right join b 
    on a.code=b.code and a.test=b.test and a.value=b.value
where a.value is missing
order by code, test, from
;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 07 Oct 2015 18:34:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-merge-and-find-mismatch/m-p/228954#M41381</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2015-10-07T18:34:58Z</dc:date>
    </item>
    <item>
      <title>Re: Proc SQL merge and find mismatch</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-merge-and-find-mismatch/m-p/228956#M41382</link>
      <description>&lt;P&gt;This could be done in fewer steps, but I&amp;nbsp;used multiple PROC SQL statements to show what is done at each step to arrive at the final results.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;[Edited: you may want to change "&lt;FONT face="courier new,courier"&gt;EXCEPT ALL&lt;/FONT&gt;" to "&lt;FONT face="courier new,courier"&gt;EXCEPT&lt;/FONT&gt;". If&amp;nbsp;your data contains&amp;nbsp;multiple rows with identical&amp;nbsp;values (e.g. three observations&amp;nbsp;in Table_A that all have&amp;nbsp;"1001 / ABCD / Good"), "&lt;FONT face="courier new,courier"&gt;EXCEPT&lt;/FONT&gt;"&amp;nbsp;should&amp;nbsp;give you better results.]&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA Table_A;
  LENGTH Code 8 Test $10 Value $20;
  INPUT Code Test $ Value $;
  DATALINES;
  1001 ABCD Good
  1001 ABCD Bad
  1001 ABCD Above_average
  1001 ABCD Average
;
RUN;
 
DATA Table_B;
  LENGTH Code 8 Test $10 Value1 $20;
  INPUT Code Test $ Value1 $;
  DATALINES;
  1001 ABCD Bad
  1001 ABCD Good
  1001 ABCD .
  1001 ABCD Below_average
;
RUN;


PROC SQL;
  CREATE TABLE Table_A_Not_B AS 
  SELECT Qry.*
       , monotonic() AS seq_num
  FROM (SELECT * FROM Table_A(WHERE=(Value IS NOT NULL))
&lt;FONT color="#FF0000"&gt;  /* Change "EXCEPT ALL" to "EXCEPT" */&lt;/FONT&gt;
  EXCEPT
  SELECT * FROM Table_B(WHERE=(Value1 IS NOT NULL))) AS Qry;
QUIT;


PROC SQL;
  CREATE TABLE Table_B_Not_A AS 
  SELECT Qry.*
       , monotonic() AS seq_num
  FROM (SELECT * FROM Table_B(WHERE=(Value1 IS NOT NULL))
&lt;FONT color="#FF0000"&gt;  /* Change "EXCEPT ALL" to "EXCEPT" */&lt;/FONT&gt;
  EXCEPT
  SELECT * FROM Table_A(WHERE=(Value IS NOT NULL))) AS Qry;
QUIT;


/* this would give you the results exactly the way you want (side-by-side) */
PROC SQL;
  CREATE TABLE Want_Side_by_Side AS 
  SELECT COALESCE(T1.Code, T2.Code) AS Code
       , COALESCE(T1.Test, T2.Test) AS Test
       , T1.Value
       , T2.Value1
       , COALESCE(T1.seq_num, T2.seq_num) AS seq_num
  FROM Table_A_Not_B AS T1
  FULL OUTER JOIN Table_B_Not_A AS T2
    ON  (T1.Code        = T2.Code
         AND T1.Test    = T2.Test
         AND T1.seq_num = T2.seq_num);
QUIT;


/* alternate version: this would give you the results vertically (stacked); 
   this approach would be more traditional in SQL because it avoids assigning 
   and match/mismatch preference (Ballardw had pointed this out above) */
PROC SQL;
  CREATE TABLE Want_Stacked(drop=seq_num) AS 
  SELECT T1.*, 'Table_A_Not_B' AS Row_Source FROM Table_A_Not_B AS T1
  UNION 
  SELECT T2.*, 'Table_B_Not_A' AS Row_Source FROM Table_B_Not_A AS T2;
QUIT;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hope this helps.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;-- hbi&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 07 Oct 2015 19:07:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-merge-and-find-mismatch/m-p/228956#M41382</guid>
      <dc:creator>hbi</dc:creator>
      <dc:date>2015-10-07T19:07:08Z</dc:date>
    </item>
    <item>
      <title>Re: Proc SQL merge and find mismatch</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-merge-and-find-mismatch/m-p/228958#M41383</link>
      <description>&lt;P&gt;proc sql;&lt;BR /&gt;create table want as&lt;BR /&gt;select distinct a.code,a.test,a.value,b.value1&lt;BR /&gt;from table_a a left join&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; table_b b on&lt;BR /&gt;a.code = a.code and&lt;BR /&gt;b.test = b.test&lt;BR /&gt;where value not in (select b.value1 from table_b b) and&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value1 not in (select a.value from table_a a);&lt;/P&gt;</description>
      <pubDate>Wed, 07 Oct 2015 18:25:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-merge-and-find-mismatch/m-p/228958#M41383</guid>
      <dc:creator>Steelers_In_DC</dc:creator>
      <dc:date>2015-10-07T18:25:28Z</dc:date>
    </item>
    <item>
      <title>Re: Proc SQL merge and find mismatch</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-merge-and-find-mismatch/m-p/228960#M41384</link>
      <description>&lt;P&gt;Here's the output for each of the four PROC SQL statements:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV style="margin-left: 50px;"&gt;
&lt;TABLE width="357"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD colspan="5" width="357"&gt;
&lt;P&gt;&lt;STRONG&gt;Table_A_Not_B&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR bgcolor="#B0E0E6"&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Obs&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Code&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Test&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;&lt;STRONG&gt;Value&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="71"&gt;
&lt;P&gt;&lt;STRONG&gt;seq_num&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1001&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;ABCD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;Above_average&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="71"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;2&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1001&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;ABCD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;Average&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="71"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD colspan="5" width="357"&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD colspan="5" width="357"&gt;
&lt;P&gt;&lt;STRONG&gt;Table_B_Not_A&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR bgcolor="#B0E0E6"&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Obs&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Code&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Test&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;&lt;STRONG&gt;Value1&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="71"&gt;
&lt;P&gt;&lt;STRONG&gt;seq_num&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1001&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;ABCD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;Below_average&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="71"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="449"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD colspan="6" width="449"&gt;
&lt;P&gt;&lt;STRONG&gt;Want_Side_by_Side&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR bgcolor="#B0E0E6"&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Obs&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Code&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Test&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;&lt;STRONG&gt;Value&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="99"&gt;
&lt;P&gt;&lt;STRONG&gt;Value1&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;seq_num&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1001&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;ABCD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;Above_average&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="99"&gt;
&lt;P&gt;Below_average&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;2&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1001&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;ABCD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;Average&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="99"&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="385"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD colspan="5" width="385"&gt;
&lt;P&gt;&lt;STRONG&gt;Want_Stacked&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR bgcolor="#B0E0E6"&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Obs&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Code&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;Test&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;&lt;STRONG&gt;Value&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="99"&gt;
&lt;P&gt;&lt;STRONG&gt;Row_Source&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1001&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;ABCD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;Above_average&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="99"&gt;
&lt;P&gt;Table_A_Not_B&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;2&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1001&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;ABCD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;Average&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="99"&gt;
&lt;P&gt;Table_A_Not_B&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;3&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;1001&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;ABCD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="95"&gt;
&lt;P&gt;Below_average&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="99"&gt;
&lt;P&gt;Table_B_Not_A&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 07 Oct 2015 18:40:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-merge-and-find-mismatch/m-p/228960#M41384</guid>
      <dc:creator>hbi</dc:creator>
      <dc:date>2015-10-07T18:40:12Z</dc:date>
    </item>
  </channel>
</rss>

