首页 > 解决方案 > 聚合可能不会出现在 WHERE 子句中,除非它出现在 HAVING 子句中包含的子查询中

问题描述

消息 147,级别 15,状态 1,第 191 行
聚合可能不会出现在 WHERE 子句中,除非它位于包含在 HAVING 子句或选择列表中的子查询中,并且正在聚合的列是外部引用。

代码:

select  
    count(i.item_id), warehouse_id 
from 
    items_in_warehouse i
where 
    date_from >= '2021-01-01' 
    and date_from <= '2021-03-31' 
    and count(warehouse_id) >= 5 
    and count(warehouse_id) <= 10 
group by 
    warehouse_id;

我认为问题在于计数功能。

标签: sqlsql-serverdatabasetsql

解决方案


错误消息几乎是在告诉您如何修复它,您需要使用它having来过滤聚合:

您将havinggroup by

having count(warehouse_id) between 5 and 10;

推荐阅读