1

Proc SQL 内で、マクロ変数を使用したいのです&condition3が、マクロ変数の文字列「t1」を「t6」に置き換えたいと考えています。次の式を機能させるにはどうすればよいtranslate(&condition3,'T6','T1')ですか。

ちなみに、次のように&condition3解決されます。and t1.store in ('1234')

完全なクエリ:

Proc sql;
  Create table xxx as
    Select....
      From ...
      Where condition1
        And condition 2
        &condition3 
4

1 に答える 1

0

%SYSFUNCマクロ ステートメントを使用する必要があります。

%sysfunc(tranwrd(&condition3,t1,t6))

これを直接使用できます。つまり、別のマクロ変数に割り当てる必要はありません。これを PROC SQL で使用しているという事実は、渡されるテキストを作成しているだけなので、無関係です。

とはいえ、ここでマクロ変数の代わりにマクロを使用することを検討することもできます。もしそうなら、これはより論理的だろう

%macro condition3(table=);
  and &table..store in ('1234')
%mend condition3;

その後、マクロ変数と同じように SQL でマクロを使用できます。

where condition1
  and condition2
  %condition3(table=t6)
于 2014-09-12T15:48:58.687 に答える