BookmarkSubscribeRSS Feed
GN0001
Barite | Level 11

Hello team,

 

I am doing an inner join. 

I have one left table and 4 right tables,

I need to do inner joins with these 4 tables.

left table with first right table then output

left table with second right table then output

until the end,

but each time I do the joins, the second join should be with the rest of observations that

were not joined in the first attempt.

 

I hope this makes sense, if not, please let me know.

Respectfully,

blue

Blue Blue
1 REPLY 1
SASKiwi
PROC Star

If I understand your requirements correctly and assume that your 4 right tables have the same columns then something like this should work:

proc sql;
  create table want1 as

  select '1' as JoinNum
        ,*
  from Table1 as T1
  inner join table2 as T2
  on T1.key = T2.key

  union

  select '2' as JoinNum
        ,*
  from Table1 as T1
  inner join table3 as T2
  on T1.key = T2.key

  union

  select '3' as JoinNum
        ,*
  from Table1 as T1
  inner join table4 as T2
  on T1.key = T2.key

  union

  select '4' as JoinNum
        ,*
  from Table1 as T1
  inner join table5 as T2
  on T1.key = T2.key

  order by key, JoinNum
  ;
quit;

data want2;
  set want1;
  by key JoinNum;
  if first.key;
run;

The strategy is to do all 4 joins and to give each a priority. By sorting the 4 joins in priority order, you can ensure only the highest priority join is chosen.

sas-innovate-white.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

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
  • 1 reply
  • 463 views
  • 1 like
  • 2 in conversation