SQL计数查询

时间:2008-10-02 13:56:22

标签: sql sql-server sql-server-2005

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

2 个答案:

答案 0 :(得分:14)

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

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

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

答案 1 :(得分:4)

尝试

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

您的查询有两个错误:

  • 使用分组时聚合的位置,使用
  • 解决
  • 在条件中使用聚合的别名,不支持,再次使用聚合解决