<?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: Merge by two variables (keeping the common observations of one only) in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Merge-by-two-variables-keeping-the-common-observations-of-one/m-p/704096#M215816</link>
    <description>&lt;P&gt;My bad it should not be missing, i just modified it.&lt;/P&gt;</description>
    <pubDate>Mon, 07 Dec 2020 10:22:07 GMT</pubDate>
    <dc:creator>Mathis1</dc:creator>
    <dc:date>2020-12-07T10:22:07Z</dc:date>
    <item>
      <title>Merge by two variables (keeping the common observations of one only)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Merge-by-two-variables-keeping-the-common-observations-of-one/m-p/704092#M215813</link>
      <description>&lt;P&gt;Hi, i would like to merge two tables by two variables A1 and A2, but keep the observations that only have A1 in common in the defenitive table. It would look like this :&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="249"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="82.4px" height="29px"&gt;Table 1&amp;nbsp;&lt;/TD&gt;
&lt;TD width="82.4px" height="29px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="83.2px" height="29px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="82.4px" height="29px"&gt;A1&lt;/TD&gt;
&lt;TD width="82.4px" height="29px"&gt;A2&lt;/TD&gt;
&lt;TD width="83.2px" height="29px"&gt;Y1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="82.4px" height="29px"&gt;A&lt;/TD&gt;
&lt;TD width="82.4px" height="29px"&gt;1&lt;/TD&gt;
&lt;TD width="83.2px" height="29px"&gt;X&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="82.4px" height="29px"&gt;A&lt;/TD&gt;
&lt;TD width="82.4px" height="29px"&gt;2&lt;/TD&gt;
&lt;TD width="83.2px" height="29px"&gt;X&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="82.4px" height="29px"&gt;A&lt;/TD&gt;
&lt;TD width="82.4px" height="29px"&gt;3&lt;/TD&gt;
&lt;TD width="83.2px" height="29px"&gt;X&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="82.4px" height="29px"&gt;A&lt;/TD&gt;
&lt;TD width="82.4px" height="29px"&gt;4&lt;/TD&gt;
&lt;TD width="83.2px" height="29px"&gt;X&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="82.4px" height="29px"&gt;B&lt;/TD&gt;
&lt;TD width="82.4px" height="29px"&gt;1&lt;/TD&gt;
&lt;TD width="83.2px" height="29px"&gt;X&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="82.4px" height="29px"&gt;C&lt;/TD&gt;
&lt;TD width="82.4px" height="29px"&gt;1&lt;/TD&gt;
&lt;TD width="83.2px" height="29px"&gt;X&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="82.4px" height="29px"&gt;C&lt;/TD&gt;
&lt;TD width="82.4px" height="29px"&gt;2&lt;/TD&gt;
&lt;TD width="83.2px" height="29px"&gt;X&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="82.4px" height="29px"&gt;D&lt;/TD&gt;
&lt;TD width="82.4px" height="29px"&gt;1&lt;/TD&gt;
&lt;TD width="83.2px" height="29px"&gt;X&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="82.4px" height="29px"&gt;D&lt;/TD&gt;
&lt;TD width="82.4px" height="29px"&gt;2&lt;/TD&gt;
&lt;TD width="83.2px" height="29px"&gt;X&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE style="border-collapse: collapse; width: 186pt;" border="0" width="249" cellspacing="0" cellpadding="0"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style="width: 62pt;"&gt;Table 2&lt;/TD&gt;
&lt;TD style="width: 62pt;"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD style="width: 62pt;"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.4pt;"&gt;
&lt;TD width="83" height="19" style="height: 14.4pt; width: 62pt;"&gt;A1&lt;/TD&gt;
&lt;TD width="83" style="width: 62pt;"&gt;A2&lt;/TD&gt;
&lt;TD width="83" style="width: 62pt;"&gt;Y2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.4pt;"&gt;
&lt;TD height="19" style="height: 14.4pt;"&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD&gt;Y&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.4pt;"&gt;
&lt;TD height="19" style="height: 14.4pt;"&gt;A&lt;/TD&gt;
&lt;TD align="right"&gt;5&lt;/TD&gt;
&lt;TD&gt;Y&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.4pt;"&gt;
&lt;TD height="19" style="height: 14.4pt;"&gt;B&lt;/TD&gt;
&lt;TD align="right"&gt;2&lt;/TD&gt;
&lt;TD&gt;Y&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.4pt;"&gt;
&lt;TD height="19" style="height: 14.4pt;"&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD&gt;Y&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.4pt;"&gt;
&lt;TD height="19" style="height: 14.4pt;"&gt;C&lt;/TD&gt;
&lt;TD align="right"&gt;2&lt;/TD&gt;
&lt;TD&gt;Y&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.4pt;"&gt;
&lt;TD height="19" style="height: 14.4pt;"&gt;D&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD&gt;Y&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.4pt;"&gt;
&lt;TD height="19" style="height: 14.4pt;"&gt;D&lt;/TD&gt;
&lt;TD align="right"&gt;3&lt;/TD&gt;
&lt;TD&gt;Y&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.4pt;"&gt;
&lt;TD height="19" style="height: 14.4pt;"&gt;E&lt;/TD&gt;
&lt;TD align="right"&gt;3&lt;/TD&gt;
&lt;TD&gt;Y&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.4pt;"&gt;
&lt;TD height="19" style="height: 14.4pt;"&gt;E&lt;/TD&gt;
&lt;TD align="right"&gt;4&lt;/TD&gt;
&lt;TD&gt;Y&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.4pt;"&gt;
&lt;TD height="19" style="height: 14.4pt;"&gt;F&lt;/TD&gt;
&lt;TD align="right"&gt;2&lt;/TD&gt;
&lt;TD&gt;Y&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.4pt;"&gt;
&lt;TD height="19" style="height: 14.4pt;"&gt;F&lt;/TD&gt;
&lt;TD align="right"&gt;1&lt;/TD&gt;
&lt;TD&gt;Y&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.4pt;"&gt;
&lt;TD height="19" style="height: 14.4pt;"&gt;G&lt;/TD&gt;
&lt;TD align="right"&gt;2&lt;/TD&gt;
&lt;TD&gt;Y&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.4pt;"&gt;
&lt;TD height="19" style="height: 14.4pt;"&gt;G&lt;/TD&gt;
&lt;TD align="right"&gt;3&lt;/TD&gt;
&lt;TD&gt;Y&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The definitive table would looke like it :&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;TABLE width="332"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;Have&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="83"&gt;A1&lt;/TD&gt;
&lt;TD width="83"&gt;A2&lt;/TD&gt;
&lt;TD width="83"&gt;Y1&lt;/TD&gt;
&lt;TD width="83"&gt;Y2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;X&lt;/TD&gt;
&lt;TD&gt;Y&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;X&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;X&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;X&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;Y&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;X&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;B&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;Y&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;X&lt;/TD&gt;
&lt;TD&gt;Y&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;X&lt;/TD&gt;
&lt;TD&gt;Y&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;X&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;X&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;Y&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 for your help &lt;span class="lia-unicode-emoji" title=":grinning_face_with_smiling_eyes:"&gt;😄&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 07 Dec 2020 10:21:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Merge-by-two-variables-keeping-the-common-observations-of-one/m-p/704092#M215813</guid>
      <dc:creator>Mathis1</dc:creator>
      <dc:date>2020-12-07T10:21:34Z</dc:date>
    </item>
    <item>
      <title>Re: Merge by two variables (keeping the common observations of one only)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Merge-by-two-variables-keeping-the-common-observations-of-one/m-p/704095#M215815</link>
      <description>&lt;P&gt;Why is Y2 missing in the first obs of the desired output?&lt;/P&gt;</description>
      <pubDate>Mon, 07 Dec 2020 10:18:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Merge-by-two-variables-keeping-the-common-observations-of-one/m-p/704095#M215815</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-12-07T10:18:12Z</dc:date>
    </item>
    <item>
      <title>Re: Merge by two variables (keeping the common observations of one only)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Merge-by-two-variables-keeping-the-common-observations-of-one/m-p/704096#M215816</link>
      <description>&lt;P&gt;My bad it should not be missing, i just modified it.&lt;/P&gt;</description>
      <pubDate>Mon, 07 Dec 2020 10:22:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Merge-by-two-variables-keeping-the-common-observations-of-one/m-p/704096#M215816</guid>
      <dc:creator>Mathis1</dc:creator>
      <dc:date>2020-12-07T10:22:07Z</dc:date>
    </item>
    <item>
      <title>Re: Merge by two variables (keeping the common observations of one only)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Merge-by-two-variables-keeping-the-common-observations-of-one/m-p/704113#M215824</link>
      <description>&lt;P&gt;Ok. If your actual data is sorted, a simple Merge Statement is enough?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I know that your sample data is not (but almost though so I have a feeling your actual data may be)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data Table1;   
input A1 $ A2 Y1 $;
datalines;
A 1 X
A 2 X
A 3 X
A 4 X
B 1 X
C 1 X
C 2 X
D 1 X
D 2 X
;

data Table2;   
input A1 $ A2 Y2 $;
datalines;
A 1 Y
A 5 Y
B 2 Y
C 1 Y
C 2 Y
D 1 Y
D 3 Y
E 3 Y
E 4 Y
F 1 Y
F 2 Y
G 2 Y
G 3 Y
;

data want;
   merge Table1 Table2;
   by A1 A2;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 07 Dec 2020 11:47:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Merge-by-two-variables-keeping-the-common-observations-of-one/m-p/704113#M215824</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-12-07T11:47:12Z</dc:date>
    </item>
    <item>
      <title>Re: Merge by two variables (keeping the common observations of one only)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Merge-by-two-variables-keeping-the-common-observations-of-one/m-p/704114#M215825</link>
      <description>&lt;P&gt;Isn't the `in=` operator missing?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
   merge Table1(in = t1) Table2;
   by A1 A2;
   if t1;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Bart&lt;/P&gt;</description>
      <pubDate>Mon, 07 Dec 2020 11:50:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Merge-by-two-variables-keeping-the-common-observations-of-one/m-p/704114#M215825</guid>
      <dc:creator>yabwon</dc:creator>
      <dc:date>2020-12-07T11:50:31Z</dc:date>
    </item>
    <item>
      <title>Re: Merge by two variables (keeping the common observations of one only)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Merge-by-two-variables-keeping-the-common-observations-of-one/m-p/704119#M215828</link>
      <description>&lt;P&gt;First we need a lookup table that identifies the a1 groups we want to keep:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data l;
merge
  table1 (in=t1 keep=a1)
  table2 (in=t2 keep=a1)
;
by a1;
if t1 and t2;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Next, merge the tables, and select those groups in the lookup:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
merge
&amp;nbsp; table1
&amp;nbsp; table2
;
by a1 a2;
if _n_ = 1
then do;
&amp;nbsp; declare hash l (dataset:"l");
&amp;nbsp; l.definekey("a1");
&amp;nbsp; l.definedone();
end;
if l.check() = 0;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 07 Dec 2020 12:24:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Merge-by-two-variables-keeping-the-common-observations-of-one/m-p/704119#M215828</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-12-07T12:24:12Z</dc:date>
    </item>
    <item>
      <title>Re: Merge by two variables (keeping the common observations of one only)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Merge-by-two-variables-keeping-the-common-observations-of-one/m-p/704121#M215830</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;*sql;
proc sql;
create table want1 as
select * from
  (select a.a1,
          a.a2,
          a.y1,
          b.y2 
            from table1 a left join table2 b 
              on a.a1=b.a1 and a.a2=b.a2
  union 
  select b.a1,
         b.a2,
         a.y1,
         b.y2
           from table1 a right join table2 b 
             on a.a1=b.a1 and a.a2=b.a2)
    where a1 in (select distinct a1 from table1);
  ;
quit;

*hash;
data want2;
  length a1 $8 a2 8 y1 y2 $8;
  if _N_=1 then do;
      if 0 then set table2;
      dcl hash h(dataset:"table2",multidata:"y") 
                x(multidata:"y") 
                a(multidata:"y",ordered:"y") 
                u();
      h.definekey("a1","a2");
      h.definedata("a1","a2","y2");
      h.definedone();
      
      x.definekey("a1","a2");
      x.definedata("a1","a2","y1");
      x.definedone();
      
      a.definekey("a1","a2");
      a.definedata("a1","a2","y1","y2");
      a.definedone();
      
      u.definekey("a1");
      u.definedone();

      dcl hiter hi("h") ai("a");		
  end;
  do until(last);
      set table1 end=last;
      x.add();
      _iorc_=u.add();
      _iorc_=h.find();
      if _iorc_ ne 0 then call missing(y2);
      a.replace();
  end;
  if last;
  do while(hi.next()=0);
      _iorc_=x.find();
      if _iorc_ ne 0 then call missing(y1);
      a.replace();
  end;
  if last;
  do while(ai.next()=0);
      if u.find()=0 then output;
  end;
  
  h.clear();
  x.clear();
  a.clear();
  u.clear();
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 08 Dec 2020 02:58:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Merge-by-two-variables-keeping-the-common-observations-of-one/m-p/704121#M215830</guid>
      <dc:creator>hhinohar</dc:creator>
      <dc:date>2020-12-08T02:58:39Z</dc:date>
    </item>
    <item>
      <title>Re: Merge by two variables (keeping the common observations of one only)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Merge-by-two-variables-keeping-the-common-observations-of-one/m-p/704218#M215864</link>
      <description>&lt;P&gt;Based on strictly on what is stated I infer that the edge case of two groups of rows with a common A1 but completely disjoint in A2 would be in the result set.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Proc SQL can use a group COUNT to determine when a join has rows from both left and right tables.&amp;nbsp; COALESCE must be used ensure the join key is propagated into the result set.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;P&gt;Added A1='Z' to LEFT with no such A1 in RIGHT, showing, that according to 'rules' Z should not be in result.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data Table1;   
input A1 $ A2 Y1 $;
datalines;
A 1 X
A 2 X
A 3 X
A 4 X
B 1 X
C 1 X
C 2 X
D 1 X
D 2 X
Z 1 X
Z 2 X
;

data Table2;   
input A1 $ A2 Y2 $;
datalines;
A 1 Y
A 5 Y
B 2 Y
C 1 Y
C 2 Y
D 1 Y
D 3 Y
E 3 Y
E 4 Y
F 1 Y
F 2 Y
G 2 Y
G 3 Y
;

proc sql;
  create table want as
  select 
    coalesce (left.a1, right.a1) as a1
  , coalesce (left.a2, right.a2) as a2
  , left.y1
  , right.y2
  from 
    table1 as left
  full join 
    table2 as right
  on
    left.a1 = right.a1 &amp;amp;
    left.a2 = right.a2
  group by
    calculated a1
  having 
    count (left.a1) &amp;gt; 0 and 
    count (right.a1) &amp;gt; 0
  order by
    a1, a2
  ;&lt;/PRE&gt;</description>
      <pubDate>Mon, 07 Dec 2020 17:42:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Merge-by-two-variables-keeping-the-common-observations-of-one/m-p/704218#M215864</guid>
      <dc:creator>RichardDeVen</dc:creator>
      <dc:date>2020-12-07T17:42:05Z</dc:date>
    </item>
  </channel>
</rss>

