Я создал макрос, в котором я соединяюсь с несколькими таблицами, используя макрокоманду в имени таблицы. Таким образом, он будет вызываться для разных значений этой макропеременной и выполняет для них одну и ту же обработку, используя разные имена таблиц (основывайтесь на макрос var). Но для нескольких значений одна из таблиц в соединении может быть несуществующей, тогда я бы не хотел присоединяться к ней.Как выполнить условное соединение (если одна таблица может быть несуществующей)
example : /* example code*/
macro test(cmpnynme,demog,deptt) ;
proc sql;
create table final as
select a.name,
b.age,
c.dept
from dpt_name_&cmpnynme. a
inner join demographics_&demog. b on a.dept_id = b.dept_id
left outer join depart_&deptt. c on a.dept_id = c.dept_id;
quit;
%mend;
%test(a,b,c);
%test(b,e,f);
%test(f,g,h); /*Macro calls */
Теперь depart_h не существует, поэтому в данном случае я не хочу, чтобы левое соединение произойдет, так как это non_existent стол и возвращает ошибку в третьем вызове макроса. Как решить эту проблему?
Спасибо за ваш ответ, но я думаю, что здесь был написан код T_SQL, это в SAS, поэтому я не совсем понимаю, что сделано в вашем коде. – Rhea
На самом деле его запрос MySql, вы передаете переменные через макросы, не так ли? Мы можем проверить условие от этих переменных и добавить запрос. Наконец, готовый запрос может быть выполнен. Это то, что я хотел показать! –