if … then
в шаге данных не соответствует SQL, показанному в вопросе. Условное присваивание в SQL выполняется с помощью оператора case
.
Так что шаг DATA, такой как
data want;
set have;
…
if date="20180112" and type="apple" and location="dc" then do;
Blah1="rain";
Blah2="something else";
end;
будет соответствовать SQL
Proc SQL;
create table want as
select …
, case when date="20180112" and type="apple" and location="dc"
then "rain"
else ""
end as Blah1
, case when date="20180112" and type="apple" and location="dc"
then "something else"
else ""
end as Blah2
from
have
…
;
Для случая, когда для какого-либо алгоритма необходимо назначить несколько переменных одновременно, когда соблюдены некоторые критерии (if
логика):
- Шаг данных имеет синтаксис
do; … end;
, который может содержать несколько операторов присваивания.
- Оператор выбора SQL может назначать только одну переменную для каждой логической оценки (
case statement
), таким образом, логический код должен повторяться для каждой присваиваемой переменной на основе критериев.