首页 > 解决方案 > 根据条件连接多个表

问题描述

我有数据需要根据条件加入不同的表,月份。我正在使用proc sql。目前我正在使用

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;

但是,这是行不通的。非常感谢任何帮助。

标签: sqljoinsas

解决方案


您可以使用条件连接在单个查询中执行此操作:

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'

请注意,您不应该有多个表来存储不同月份的相同数据。相反,您应该有一个表,多一列来存储月份。


推荐阅读