I have data where i need to join to different tables based on a condition, month. I am using proc sql. Currently I am using
x
Proc sql;
create table test as
If month="mar"
then
select a.*,
b.var1,
b.var2,
from
data as a
left join
data2_mar
on a.id=b.id
else
select a.*,
c.var1,
c.var2,
from
data as a
left join
data2_April
on a.id=c.id;
Run;
However, this is not working. Any help greatly appreciated.
Advertisement
Answer
You could do this in a single query, using conditional joins:
select
a.*,
coalesce(b.var1, c.var1) var1,
coalesce(b.var2, c.var2) var2
from data a
left join data2_mar b
on b.id = a.id
and month = 'mar'
left join data2_april c
on c.id = a.id
and month = 'april'
Note that you should not have several tables to store the same data over different months. Instead, you should have a single table, with one more column to store the month.