У меня есть проблема, для которой я не смог найти решение в Stackoverflow или где-либо еще, и я не уверен, если это возможно, решить с помощью SAS pro c sql.
My Цель состоит в том, чтобы создать представление (z) на основе набора данных (a) и представления (b). Проблема заключается в том, что (а) можно обновить до фактического года в начале года, тогда как (б) можно обновить только позднее в этом году. Тем не менее, я хочу, чтобы моя точка зрения (z) представила данные в начале года (даже если это временно), что, естественно, возможно только при наличии данных как из (a), так и (b). Итак, я хочу, чтобы представление (z) использовало последний доступный год из (b) и использовало его так, как если бы это был фактический год (поэтому в основном для вменения данных в (b) для самого последнего года данных в (a). Я попытался сделать это с помощью следующего кода, но он не сработал так, как я хочу:
proc sql;
create view x1 as
select ste.jahr, ste.gnr, ste.einwg, stk.stkabs
from d18.fg_gji_steinh as ste
inner join
d18.fg_gji_skraft as stk
on
case when exists (select stkabs from d18.fg_gji_skraft where ste.jahr=stk.jahr)
then ste.jahr=stk.jahr and ste.gnr=stk.gnr
else input(ste.jahr,4.)=input(stk.jahr,4.)+1 and ste.gnr=stk.gnr
end
order by ste.jahr, ste.gnr ;
quit;
Он выдает ожидаемые данные за первый и последний год, но не за годы между поскольку для одного наблюдения получаются две строки. Первое наблюдение содержит данные за фактический год, а другое наблюдение содержит данные за прошлый год.
Кто-нибудь знает, как решить эту проблему?