嗨,为什么这在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分组

最佳答案

您不能在where子句或haveing子句中使用别名,因为直到生成结果集之后,才对别名进行处理,

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

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

10-08 14:05