SAS SQL создает таблицу в зависимости от результата макропеременной - PullRequest
0 голосов
/ 21 сентября 2019

Я борюсь с созданием новой таблицы в proc sql SAS в зависимости от результата макропеременной.

1) Я хочу проверить, существует ли необходимая таблица.

2) Если она существует, тоЯ хочу создать новую таблицу с заданными параметрами.

3) Если она не существует, я хочу создать новую таблицу с другими параметрами.

Я думаю, что я знаю, как проверить, еслитаблица существует (0 или 1 в результатах журнала):

        %let tex1 = %sysfunc(exist(Base.pk_&monthP1));   
        %put tex1 = &tex1.;

Но я не знаю, как внедрить этот результат в инструкцию proc sql.

Мне нужно вот что:

        proc sql;
        create table test as
        select case when &text1 = 0 then select ...
        else 
        select ...
        end ;
        quit;

Заранее благодарим вас за предложенные решения.

1 Ответ

0 голосов
/ 21 сентября 2019

Таким образом, если обе таблицы имеют одинаковую структуру, единственной частью кода SQL, которую необходимо изменить, является предложение FROM.Вероятно, проще установить условную переменную макроса на имя, которое нужно использовать, и заменить имя набора данных ссылкой на макропеременную.

select var1,varb, ....
  from &dsname.

Теперь проблема заключается в простой установке макропеременной.,Вы можете сделать это с помощью макропрограммы.Но вы также можете сделать это с помощью логики шагов данных.

data _null_ ;
  if exist("Base.pk_&monthP1") then call symputx('dsname','table1');
  else call symputx('dsname','table2');
run;
proc sql;
   ... from &dsname. ...
...