SQL聚合函数嵌套报错(Msg 130)问题排查求助
错误原因分析:Msg 130 聚合函数嵌套问题
核心错误原因
SQL语法明确限制:不能在包含聚合函数或子查询的表达式上再使用聚合函数,这就是触发Msg 130错误的根本原因。
问题代码拆解
问题出在Average_corr的计算逻辑中:
AVG(CASE WHEN ABS(1-Minute10Average/AVG(CASE WHEN [Minute10Average]>0 THEN [Minute10Average] END))<0.5 THEN Minute10Average END) AS Average_corr
- 外层的
AVG()是聚合函数,用于计算符合条件的Minute10Average的平均值 - 但在它的CASE判断表达式里,又嵌套了另一个
AVG()聚合函数,用来计算分组内Minute10Average>0的平均值 - 聚合函数基于分组后的数据集计算,同一层级的聚合函数无法直接引用另一个聚合函数的结果——内层
AVG的计算结果还未确定,外层AVG无法将其作为表达式的一部分参与计算,因此触发语法错误。
内容的提问来源于stack exchange,提问作者Nikita
相关产品推荐
相关产品推荐

