SAS SQL在哪里和拥有

时间:2016-11-25 11:41:22

标签: sql sas

end()

为什么outpur与上述陈述不同,因为两者都相同? 有可能吗?

1 个答案:

答案 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%并再次运行。