Присоединиться к нескольким таблицам на основе условия - PullRequest
1 голос
/ 27 мая 2020

У меня есть данные, в которых мне нужно присоединиться к разным таблицам в зависимости от условия, месяца. Я использую pro c 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;

Однако это не работает. Любая помощь очень ценится.

1 Ответ

1 голос
/ 27 мая 2020

Вы можете сделать это в одном запросе, используя условные соединения:

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'

Обратите внимание, что у вас не должно быть нескольких таблиц для хранения одних и тех же данных в разные месяцы. Вместо этого у вас должна быть одна таблица с еще одним столбцом для хранения месяца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...