SQL计数查询

时间:2020-03-06 15:01:39  来源:igfitidea点击:

嗨,为什么这在SQL Server 2005中不起作用?

select HALID, count(HALID) as CH from Outages.FaultsInOutages

where CH > 3

group by HALID

我得到无效的列名" CH"

我认为拥有是正确的方法,但仍然会收到错误:
无效的列名" CH"。

运行时:

从Outages.FaultsInOutages中选择HALID,count(HALID)作为CH
按CH> 3的HALID分组

解决方案

尝试

select HALID, count(HALID) from Outages.FaultsInOutages 
group by HALID having count(HALID) > 3

查询有两个错误:

  • 通过分组时使用聚集的位置,通过使用
  • 在不支持的条件下为聚合使用别名,可以通过再次使用聚合来解决

我们不能在where子句或者haveing子句中使用别名,因为直到生成结果集之后,才对其进行处理,正确的语法是

SELECT HALID, COUNT(HALID) AS CH
FROM Outages.FaultsInOutages
GROUP BY HALID
HAVING COUNT(HALID) > 3

这会将HALID上的项目分组,然后仅返回针对特定HALID包含3个以上条目的结果