BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
tediest
Calcite | Level 5

I need to use proc sql to select information from one data set and match to another.

This is what I did:

proc sql;

  create table merge as

  select * from data1 as a, data2 as b

  where a.var1=b.var1 and (a.var2> b.var4) and (a.var3<= b.var4);

quit;

However, after this, I would lose observations in data1 that do not satisfy the conditions "a.var1=b.var1 and (a.var2> b.var2) and (a.var2<= b.var2)“. Is there a way to retain all information in a and simply set the value of var3 to 0?

pro

Thanks a lot in advance!

1 ACCEPTED SOLUTION

Accepted Solutions
PGStats
Opal | Level 21

I guess it's var4 that you want to set to 0 when there is no match in data2? To do that, you can use a left join and the coalesce function, like this :

proc sql;

  create table merge as

  select a.*, coalesce(b.var4,0) as var4

  from data1 as a left join data2 as b

  on a.var1=b.var1 and (a.var2> b.var4) and (a.var3<= b.var4);

quit;

PG

PG

View solution in original post

4 REPLIES 4
tediest
Calcite | Level 5

Thanks a lot for the prompt reply! This is very helpful. I have been searching for the right command but missed "left join".

PGStats
Opal | Level 21

I guess it's var4 that you want to set to 0 when there is no match in data2? To do that, you can use a left join and the coalesce function, like this :

proc sql;

  create table merge as

  select a.*, coalesce(b.var4,0) as var4

  from data1 as a left join data2 as b

  on a.var1=b.var1 and (a.var2> b.var4) and (a.var3<= b.var4);

quit;

PG

PG
tediest
Calcite | Level 5

Thanks PG! This is exactly what I need.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

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
  • 4 replies
  • 1770 views
  • 3 likes
  • 3 in conversation