【发布时间】:2013-03-19 18:07:33
【问题描述】:
HAVING 子句不按SELECT 中的所有非聚合列分组
我经常遇到具有 id 列和 month 列以及许多其他指标的表。我根据其他列清除了某些行。我只想找出拥有全部 12 个月数据的 ID,所以我执行以下操作:
proc sql;
create table t as
SELECT *
FROM T1
GROUP BY id
HAVING COUNT(id) = 12
quit;
这似乎对我有用,但我想知道这种方法是否有任何危险。我知道我可以加入只有 id 和 id 计数的聚合子查询,但这种方法更容易向非 sql 用户解释。
一般来说,您可以使用HAVING 子句,在GROUP BY 中只有几列,而在SELECT 语句中没有聚合函数吗?
【问题讨论】: