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

添加IN子句后触发选择列表未包含在聚合或GROUP BY子句报错如何解决

问题原因

该报错是SQL Server的分组聚合校验规则触发的:当查询使用GROUP BY分组时,SELECT列表中所有的字段要么属于GROUP BY指定的分组字段,要么被聚合函数(如MAX/MIN/SUM等)包裹,否则数据库无法确定分组后多值字段的返回规则。

你新增的test4子查询中直接引用了外层的SI.RecordID,该字段既没有出现在GROUP BY列表中,也没有被聚合函数包裹,因此触发报错。

注:你之前写的SoldDate子查询没有触发该错误,是因为子查询内部重新定义了别名SI,引用的是子查询内部的表而非外层的SI表,不存在未聚合字段的引用问题。

解决方案

根据你的业务需求,可以二选一调整:

方案1:不改变原有分组粒度

如果不需要调整当前的分组规则,只需获取当前分组下所有SI.RecordID对应的最大事务日期,只需在子查询外层包裹MAX聚合函数即可:

MAX((SELECT max(sih2.TransactionDate) from SS_Inventory_History sih2 where sih2.InventoryID = SI.RecordID)) as test4

方案2:调整分组粒度

如果你需要按单条SS_Inventory记录的维度分组计算,直接将SI.RecordID添加到GROUP BY的字段列表末尾即可:

GROUP BY WarehouseName,
       WarehouseID,
       Location, 
       Part_Number,
       Dist_Part_Num,
       SI.RecordID

注意:该方案会让分组粒度变细,最终返回的行数会比原来多,需要确认符合业务预期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:45:05