<?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 not equal to operator in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-not-equal-to-operator/m-p/418589#M102854</link>
    <description>&lt;P&gt;Don't see the purpose of the union.&amp;nbsp; Explain more.&lt;/P&gt;
&lt;P&gt;Convert to standard SQL.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data a;
input my1:$2. my2:$2. clm drg tin;
datalines;
aa bb 1 2 3
bb cc 2 3 4
dd ee 3 4 5 
ff gg 4 5 6
hh ii 6 7 8
;
run;

data b;
input cust1:$2. cust2:$2. clm drg tin;
datalines;
aa bb 9 2 3
bb cc 8 3 4
zz xx 3 4 5 
yy ww 4 5 6
hh ii 2 7 8
;
run;


proc sql;
	create table out as
	select  a.*,
    b.Cust1,
    b.Cust2
	from a a inner join b b
	on a.clm = b.clm and a.DRG = b.DRG and a.TIN = b.TIN;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Yields&lt;/P&gt;
&lt;TABLE width="296"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="105"&gt;The SAS System&lt;/TD&gt;
&lt;TD width="33"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="29"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="27"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="24"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="39"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="39"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="105"&gt;my1&lt;/TD&gt;
&lt;TD width="33"&gt;my2&lt;/TD&gt;
&lt;TD width="29"&gt;clm&lt;/TD&gt;
&lt;TD width="27"&gt;drg&lt;/TD&gt;
&lt;TD width="24"&gt;tin&lt;/TD&gt;
&lt;TD width="39"&gt;cust1&lt;/TD&gt;
&lt;TD width="39"&gt;cust2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="105"&gt;dd&lt;/TD&gt;
&lt;TD width="33"&gt;ee&lt;/TD&gt;
&lt;TD width="29"&gt;3&lt;/TD&gt;
&lt;TD width="27"&gt;4&lt;/TD&gt;
&lt;TD width="24"&gt;5&lt;/TD&gt;
&lt;TD width="39"&gt;zz&lt;/TD&gt;
&lt;TD width="39"&gt;xx&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="105"&gt;ff&lt;/TD&gt;
&lt;TD width="33"&gt;gg&lt;/TD&gt;
&lt;TD width="29"&gt;4&lt;/TD&gt;
&lt;TD width="27"&gt;5&lt;/TD&gt;
&lt;TD width="24"&gt;6&lt;/TD&gt;
&lt;TD width="39"&gt;yy&lt;/TD&gt;
&lt;TD width="39"&gt;ww&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;</description>
    <pubDate>Tue, 05 Dec 2017 19:47:11 GMT</pubDate>
    <dc:creator>HB</dc:creator>
    <dc:date>2017-12-05T19:47:11Z</dc:date>
    <item>
      <title>PROC SQL not equal to operator</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-not-equal-to-operator/m-p/418569#M102847</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hi SAS users,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;IS there "Not equal" operator in PROC SQL?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to do the below operation to get the cust1, cust2 only when there is 3 level merge.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;create table out as&lt;BR /&gt;select&amp;nbsp; a.*&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,b.Cust1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,b.Cust2&lt;BR /&gt;from c01 a , c09 b&lt;BR /&gt;where a.clm = b.clm&lt;BR /&gt;&amp;nbsp; and a.DRG = b.DRG&lt;BR /&gt;&amp;nbsp; and a.TIN = b.TIN&lt;BR /&gt;union&lt;BR /&gt;select&amp;nbsp; a.*&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from c01 a , c09 b&lt;BR /&gt;where a.clm = b.clm&lt;BR /&gt;and a.DRG &amp;lt;&amp;gt; b.DRG&lt;BR /&gt;&amp;nbsp; and a.TIN &amp;lt;&amp;gt; b.TIN&lt;BR /&gt;;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Ana&lt;/P&gt;</description>
      <pubDate>Tue, 05 Dec 2017 18:43:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-not-equal-to-operator/m-p/418569#M102847</guid>
      <dc:creator>SASAna</dc:creator>
      <dc:date>2017-12-05T18:43:24Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL not equal to operator</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-not-equal-to-operator/m-p/418588#M102853</link>
      <description>&lt;P&gt;Use the&amp;nbsp;NE mnemonic.&lt;/P&gt;</description>
      <pubDate>Tue, 05 Dec 2017 19:41:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-not-equal-to-operator/m-p/418588#M102853</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2017-12-05T19:41:27Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL not equal to operator</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-not-equal-to-operator/m-p/418589#M102854</link>
      <description>&lt;P&gt;Don't see the purpose of the union.&amp;nbsp; Explain more.&lt;/P&gt;
&lt;P&gt;Convert to standard SQL.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data a;
input my1:$2. my2:$2. clm drg tin;
datalines;
aa bb 1 2 3
bb cc 2 3 4
dd ee 3 4 5 
ff gg 4 5 6
hh ii 6 7 8
;
run;

data b;
input cust1:$2. cust2:$2. clm drg tin;
datalines;
aa bb 9 2 3
bb cc 8 3 4
zz xx 3 4 5 
yy ww 4 5 6
hh ii 2 7 8
;
run;


proc sql;
	create table out as
	select  a.*,
    b.Cust1,
    b.Cust2
	from a a inner join b b
	on a.clm = b.clm and a.DRG = b.DRG and a.TIN = b.TIN;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Yields&lt;/P&gt;
&lt;TABLE width="296"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="105"&gt;The SAS System&lt;/TD&gt;
&lt;TD width="33"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="29"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="27"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="24"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="39"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="39"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="105"&gt;my1&lt;/TD&gt;
&lt;TD width="33"&gt;my2&lt;/TD&gt;
&lt;TD width="29"&gt;clm&lt;/TD&gt;
&lt;TD width="27"&gt;drg&lt;/TD&gt;
&lt;TD width="24"&gt;tin&lt;/TD&gt;
&lt;TD width="39"&gt;cust1&lt;/TD&gt;
&lt;TD width="39"&gt;cust2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="105"&gt;dd&lt;/TD&gt;
&lt;TD width="33"&gt;ee&lt;/TD&gt;
&lt;TD width="29"&gt;3&lt;/TD&gt;
&lt;TD width="27"&gt;4&lt;/TD&gt;
&lt;TD width="24"&gt;5&lt;/TD&gt;
&lt;TD width="39"&gt;zz&lt;/TD&gt;
&lt;TD width="39"&gt;xx&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="105"&gt;ff&lt;/TD&gt;
&lt;TD width="33"&gt;gg&lt;/TD&gt;
&lt;TD width="29"&gt;4&lt;/TD&gt;
&lt;TD width="27"&gt;5&lt;/TD&gt;
&lt;TD width="24"&gt;6&lt;/TD&gt;
&lt;TD width="39"&gt;yy&lt;/TD&gt;
&lt;TD width="39"&gt;ww&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;</description>
      <pubDate>Tue, 05 Dec 2017 19:47:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-not-equal-to-operator/m-p/418589#M102854</guid>
      <dc:creator>HB</dc:creator>
      <dc:date>2017-12-05T19:47:11Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL not equal to operator</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-not-equal-to-operator/m-p/418593#M102855</link>
      <description>&lt;P&gt;You really should provide short examples, may be four rows of each of your two data sets and what you expect from the output.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You might find the not equal results in many more records in your output than you expect. The following code is just show a small example using ne in comparisons:&lt;/P&gt;
&lt;PRE&gt;data work.co1;
   input row clm drg tin;
datalines;
1 1 1 1
2 1 1 2
3 1 1 3
4 1 2 4
5 1 2 5
;
run;

data work.co9;
   input row clm drg tin;
   cust1=rand('uniform');
   cust2=rand('uniform');

datalines;
11 1 1 1
12 1 1 2
13 1 1 7
14 1 2 8
15 1 2 9
;
run;

proc sql;
   create table example as
   select a.* ,b.row as brow
   from work.co1 as a ,
        work.co9 as b
   where a.clm = b.clm
      and a.DRG ne b.DRG
      and a.TIN ne b.TIN
  ;
quit; &lt;/PRE&gt;</description>
      <pubDate>Tue, 05 Dec 2017 20:15:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-not-equal-to-operator/m-p/418593#M102855</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2017-12-05T20:15:14Z</dc:date>
    </item>
    <item>
      <title>Re: PROC SQL not equal to operator</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-not-equal-to-operator/m-p/418668#M102868</link>
      <description>&lt;P&gt;In SAS, you can use the&amp;nbsp;&lt;STRONG&gt;NE&lt;/STRONG&gt; mnemonic for "not equal to" -- but...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You apparently want all joins within a CLM in which either BOTH drg and tin match or neither match.&amp;nbsp; I.e. you don't want instances in which only one of them matches.&amp;nbsp; I don't think you need a union operation for this.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Instead just compare the result of &lt;EM&gt;&lt;STRONG&gt;a.drg=b.drg&lt;/STRONG&gt;&lt;/EM&gt; to the result of &lt;EM&gt;&lt;STRONG&gt;a.tin=b.tin&lt;/STRONG&gt;&lt;/EM&gt;:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
  create table out as
    select a.*, b.cust1,b.cust2
    from co1 as a, co9 as b
    where a.clm=b.clm   and (a.drg=b.drg)=(a.tin=b.tin);
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The logical expressions "a.drg=b.drg" and "a.tin=b.tin" will each return a 1 or 0, depending on whether the respective equality comparison is true.&amp;nbsp; So you'll keep only those with "1=1"&amp;nbsp; (both compare equal) or "0=0" (neither equal).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 20 Sep 2018 13:50:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-SQL-not-equal-to-operator/m-p/418668#M102868</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2018-09-20T13:50:47Z</dc:date>
    </item>
  </channel>
</rss>

