SQL计数查询

tes*_*est 2 sql sql-server sql-server-2005

嗨,为什么这不适用于SQL Server 2005?

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

where CH > 3

group by HALID
Run Code Online (Sandbox Code Playgroud)

我得到无效的列名'CH'


我认为有正确的方法,但仍然收到错误:无效的列名称'CH'.

运行时:

选择HALID,计数(HALID)为来自Outages.FaultsInOutages组的CH由HALID CH> 3

Mit*_*ers 14

你不能在where子句或having子句中使用别名,因为直到生成结果集之后它才被处理,正确的语法是

SELECT HALID, COUNT(HALID) AS CH
FROM Outages.FaultsInOutages
GROUP BY HALID
HAVING COUNT(HALID) > 3
Run Code Online (Sandbox Code Playgroud)

这将在HALID上对项目进行分组,然后仅返回具有超过3个特定HALID条目的结果