You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中如何仅在计数大于0时返回统计结果?

解决方案

要获取指定日期范围内的总错误记录数,且仅当记录数大于0时返回结果,你可以用以下两种方式实现:

方法1:子查询筛选

先计算符合日期条件的总记录数,再筛选出记录数大于0的结果:

SELECT total_count AS error_count
FROM (
    SELECT COUNT(*) AS total_count
    FROM error_info
    WHERE CONVERT(datetime, created) >= '2022-12-01 10:01:41.000'
      AND CONVERT(datetime, created) < '2022-12-07 08:59:08.290'
) AS sub
WHERE total_count > 0;

方法2:无分组+HAVING过滤

把日期条件放到WHERE子句(先过滤符合条件的行),再通过HAVING直接过滤总计数大于0的情况,无需分组:

SELECT COUNT(*) AS error_count
FROM error_info
WHERE CONVERT(datetime, created) >= '2022-12-01 10:01:41.000'
  AND CONVERT(datetime, created) < '2022-12-07 08:59:08.290'
HAVING COUNT(*) > 0;

原查询移除GROUP BY报错的原因

你之前把日期条件写在HAVING里,但created列既不是聚合函数也不在GROUP BY中,SQL Server不允许这种非聚合列出现在HAVING却不在分组里的写法。正确逻辑是先用WHERE过滤日期行,再做计数和判断。

内容的提问来源于stack exchange,提问作者Rahul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:45:30