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

爲什麼outpur與上述語句不同,因爲兩者都是相同的? 這可能嗎?SAS SQL其中有

+1

在常規條件下使用,並具有聚合函數條件。 – jarlh

回答

1

WHERE將篩選進入計算的記錄。 HAVING可篩選返回的結果行。

如果你運行你的第一個查詢,則SAS會提醒你,這是remerging與原始數據的結果,因爲你是你的HAVING子句中引用非彙總統計變量。請注意,如果沒有原始記錄符合您的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; 

然後換A%Z%並重新運行。