テーブル名にマクロ変数を使用して複数のテーブルに結合しているマクロを作成しました。したがって、それはそのマクロ変数の異なる値に対して呼び出され、異なるテーブル名(マクロvarに基づいて)を使用して同じ処理を行います。しかし、いくつかの値については、結合のテーブルの1つが存在しない可能性があります、そして、私はそれに参加したくないでしょう。この場合には、私は左が、それはnon_existentテーブルだと第三のマクロ呼び出しでエラーが返されますので、発生する参加したくないので、条件付き結合方法(あるテーブルが存在しない場合)
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存在しません。 この問題を解決するにはどうすればよいですか?
ここではT_SQLコードを書きましたが、これはSASで書かれていると思いますので、あなたのコードで何が行われているのかは分かりません。 – Rhea
実際にMySqlのクエリは、マクロを介して変数を渡しています。これらの変数から条件を確認し、クエリを追加できます。最後に、準備されたクエリを実行することができます。それが私が見せたいものです! –