【发布时间】:2018-08-17 16:18:58
【问题描述】:
我有一个员工表,我正在尝试获取没有在职员工的部门 ID 列表。
我的第一次尝试是:
SELECT DISTINCT DivisionID
FROM Employees
WHERE COUNT(IsActive = 0) = 0
GROUP BY DivisionID
但 Count 不允许表达式,尽管智能感知说它允许。
然后我尝试了:
SELECT DISTINCT DivisionID
FROM Employees
WHERE SUM(CAST(IsActive AS INT)) = 0
GROUP BY DivisionID
但随后它会抱怨“聚合可能不会出现在 WHERE 子句中,除非它位于 HAVING 子句或选择列表中包含的子查询中,并且正在聚合的列是外部引用。”
这似乎应该是直截了当的,不确定问题是什么。
【问题讨论】:
-
尝试拥有而不是在哪里。在 group by 子句之后
-
where 子句用于过滤行。 Have 子句用于限制聚合行。
-
请注意,
DISTINCT是不必要的,因为这是您分组依据的列。根据定义,您只会获得不同的 ID。
标签: sql sql-server sql-server-2012