end()
为什么outpur与上述陈述不同,因为两者都相同? 有可能吗?
答案 0 :(得分:1)
WHERE
过滤进入计算的记录。 HAVING
过滤返回的结果行。
如果您运行第一个查询,那么SAS会警告您它正在使用原始数据重新合并结果,因为您在HAVING子句中引用了非摘要统计变量。请注意,如果没有原始记录符合您的HAVING子句,那么您的结果集中不会有任何观察结果。但是,如果任何记录符合您的查询,那么您将针对满足您的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;
然后将A%
更改为Z%
并再次运行。