【问题标题】:SQL count querySQL 计数查询
【发布时间】:2008-10-02 13:56:22
【问题描述】:

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

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

where CH > 3

group by HALID

我得到无效的列名“CH”


我认为 have 是正确的方法,但仍然收到错误: 列名“CH”无效。

运行时:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      试试

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

      您的查询有两个错误:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-01
        • 2019-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多