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

SQL报错Selected non-aggregate values must be part of the associated group原因咨询

SQL报错原因分析

你收到的报错提示翻译为:SQL 选择的非聚合值必须属于关联的分组
触发报错的核心原因及其他语法逻辑问题如下:

  • 错误1:HAVING子句违规引用未分组字段
    你在HAVING中使用了f_ev2.PROCESS_NO,该字段既没有被聚合函数包裹,也没有出现在GROUP BY列表中。HAVING是分组后过滤逻辑,只能引用GROUP BY的字段或者聚合计算结果。且PROCESS_NO的过滤是针对原始行的筛选,不需要放到HAVING,直接移到WHERE子句即可。
  • 错误2:SELECT列别名重复
    你将f_ev2.Identifier和聚合计算的AVG(f_ev2.Identifier)的别名都设置为了Identifier,会引发解析歧义,需要给平均值列设置一个唯一的别名。
  • 错误3:BETWEEN时间范围顺序颠倒
    BETWEEN语法要求左值小于等于右值,你写的BETWEEN (date -1) AND (date -10)是用较大的近日期匹配较小的远日期,不会返回任何有效数据,需要调整两个日期的顺序。
修复后的完整SQL代码
SELECT TOP 5
    f_ev2.Identifier,
    AVG(f_ev2.Identifier) AS Avg_Identifier,
    MIN(f_ev2.Event_dtm) AS Erster_PZ_Scan
FROM DB_DWH_MART_AKM_PLT.VW_F_EVENT f_ev2
INNER JOIN
    (
        SELECT 
        DISTINCT f_ev.AUFTRAGGEBER_EKP AS EKP
        FROM    DB_DWH_MART_AKM_PLT.VW_F_EVENT f_ev
        WHERE f_ev.PROCESS_NO = 1075
    ) AS manifest_users
ON f_ev2.AUFTRAGGEBER_EKP = manifest_users.EKP
WHERE 
    f_ev2.event_dtm BETWEEN (date -10) AND  (date -1)
    AND (f_ev2.PROCESS_NO = 1 OR f_ev2.PROCESS_NO = 2)
GROUP BY f_ev2.Identifier

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:06:09