一緒にするには少し毛色が違ったのでわけました。
さて今、以下のようなデータセットがあったとします。
data Q1;
do X=1 to 5;
output;
end;
run;
そこに
data A1;
set Q1;
where X>2;
where X<4;
run;
を実行すると、何がおきると思いますか?
whereステートメントが連続で、でてきます。
え、エラーじゃないの?と思われた方は不正解で、正しく実行されます。
結果は
となり、ログをみると
「WHERE式を置き換えました」というNOTEがでています。
つまり、一つ目のWHEREは二つ目に上書きされて、無効化されてしまったのです。
最後にくるWHEREだけが効きます。
もし、今やりたいことが「X>2」「 X<4」の2条件で抽出をかけることであれば
当然
data A1;
set Q1;
where X>2 and X<4;
run;
set Q1;
where X>2 and X<4;
run;
でいいわけです。
が、しかし、次のようにも書くことができます。
それが
data A2;
set Q1;
where X>2;
where same X<4;
run;
ですsameをつなぐことによって
whereステートメント同士をandでつなぐのと同じ効果があります。
「WHERE式を追加しました」というNOTEがでます。
で、どういう時に使うかというと
抽出式があまりに長くなって見通しが悪い時や、
元コードをできるだけ修正せずに、新しい条件を追加したい場合、
マクロ化して、抽出条件をオプションで追加できるように組む場合等でしょうか?
条件を色々追加しながら対話的に、データを段階的に絞りこんで探索する場合なんかも
いちいち and ○○とかいていくより、区切りがつくのでお勧めです。




