BookmarkSubscribeRSS Feed
podarum
Quartz | Level 8

Hi, I'm trying to use proc sql to merge 2 tables.. I want the matches (between the 2 tables) to be sent to Table A and the non matches to table B.  I'm sure this is extremely easy for some.

Thanks

4 REPLIES 4
RW9
Diamond | Level 26 RW9
Diamond | Level 26

Well, its easier in datastep (note id is just adhoc, change to your matching vars):

data both others;

     merge have1 (in=a) have2 (in=b); /* assumes sorted */

     by id;

     if a and b then output both;

     else output others;

run;

Alternatively in SQL (no need to sort):

proc sql;

     create table BOTH as

     select      A.*,

                     B.*

     from        HAVE1 A

     inner join    HAVE2 B

     on           A.ID=B.ID;

     create table OTHERS as    

     select     A.*,

                     B.*

     from        HAVE1 A

     full outer join HAVE2 B

     on           A.ID=B.ID;

quit;

Haikuo
Onyx | Level 15

,

Are you sure that  your data step solution is equivalent to your SQL one? Smiley Happy

Haikuo

RW9
Diamond | Level 26 RW9
Diamond | Level 26

Well, just typed that out from memory so may not be.  Not actually tested it as no SAS at the moment, so take with a pinch of salt.  Thanks for pointing out Haikuo.

Ksharp
Super User

When you use LEFT JOIN or RIGHT JOIN , make sure using WHERE not ON clause .

Catch up on SAS Innovate 2026

Nearly 200 sessions are now available on demand in the Innovate Hub.

Watch Now →
What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 2162 views
  • 0 likes
  • 4 in conversation