2016-11-25 7 views
1
select count(*) from tableA having product="abc"; 
select count(*) from tableA where product="abc"; 

両者は同じ理由で上記の文と異なるのはなぜですか? 可能ですか?SAS SQL where and having

+1

通常の条件の場合、および集計関数条件の場合は、どこで使用しますか。 – jarlh

答えて

1

WHEREは、計算に入るレコードをフィルタリングします。 HAVINGは、返される結果行をフィルタリングします。

最初のクエリを実行すると、HAVING句で要約統計変数が参照されていないため、SASは元のデータで結果を再作成することを警告します。元のレコードがHAVING節を満たしていない場合、結果セットには何の観測も得られないことに注意してください。しかし、ANYレコードが照会を満たしている場合、HAVING節を満たす各観測について別個の観測が行われますが、カウントされていないものはすべての観測値です。

このクエリを試してみてください。

proc sql ; 
select 'HAVING',count(*) from sashelp.class having name like 'A%' 
union all 
select 'WHERE',count(*) from sashelp.class where name like 'A%' 
; 
quit; 

その後Z%A%を変更し、再度実行します。