SQLビューの落とし穴です。以下をご覧ください。
なにこれ、VAR1が2つ存在しちゃってる、エラーにもなってない。。
実はCREATE VIEWでは、同じ名前の変数がいくつも存在する状態を作り出すことが出来てしまうんです。
では、先ほどのSQLビューに対して、VAR1を選択してPROC PRINTすると、、
1個目のVAR1がプリントされました。2個目はどうした。
私自身、この挙動を知らずにミスったことがあります。
その時の状況として、変数が数十個あるデータセットに対して、
select *, x+y as var1
みたいなselect文を書いたSQLビューを作りました。ですが元々データセットにVAR1っていう変数が存在していて、それを知らずにSQLビューの中でもVAR1っていう変数を作ってしまっていました。
このSQLビュー内で作ったVAR1に対して、
proc means data=○○;
var var1;
run;
みたいな事をやろうとしたところ、元々データセットに存在しているVAR1に対して集計が行なわれてしまい、結果がおかしい!?ってなりました。
See also...
SQLビューの作成と落とし穴①
私自身、この挙動を知らずにミスったことがあります。
その時の状況として、変数が数十個あるデータセットに対して、
select *, x+y as var1
みたいなselect文を書いたSQLビューを作りました。ですが元々データセットにVAR1っていう変数が存在していて、それを知らずにSQLビューの中でもVAR1っていう変数を作ってしまっていました。
このSQLビュー内で作ったVAR1に対して、
proc means data=○○;
var var1;
run;
みたいな事をやろうとしたところ、元々データセットに存在しているVAR1に対して集計が行なわれてしまい、結果がおかしい!?ってなりました。
See also...
SQLビューの作成と落とし穴①
0 件のコメント:
コメントを投稿