SQL计数查询

SQL计数查询,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,嗨,为什么这在SQLServer2005中不起作用 select HALID, count(HALID) as CH from Outages.FaultsInOutages where CH > 3 group by HALID 我得到的列名“CH”无效 我认为这是正确的选择,但仍然会收到错误: 列名“CH”无效 运行时: 选择HALID,从大修中将(HALID)计数为CH.FaultsInOutages 按CH>3的HALID分组 select HALID, count(HAL

嗨,为什么这在SQLServer2005中不起作用

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

where CH > 3

group by HALID
我得到的列名“CH”无效


我认为这是正确的选择,但仍然会收到错误: 列名“CH”无效

运行时:

选择HALID,从大修中将(HALID)计数为CH.FaultsInOutages 按CH>3的HALID分组

select HALID, count(HALID) from Outages.FaultsInOutages 
group by HALID having count(HALID) > 3
您的查询有两个错误:

  • 在按分组时使用where聚合,通过使用have解决
  • 在条件(不支持)中为聚合使用别名,可通过再次使用聚合解决

您不能在where子句或having子句中使用别名,因为只有在生成结果集后,正确的语法才被处理

SELECT HALID, COUNT(HALID) AS CH
FROM Outages.FaultsInOutages
GROUP BY HALID
HAVING COUNT(HALID) > 3
这将对HALID上的项目进行分组,然后仅返回具有3个以上特定HALID条目的结果