GROUP BY 错误故障排除

下表列出了 GROUP BY 错误消息以及帮助解决错误的建议。

错误号

错误消息

如何解决错误

102

“,”附近有语法错误。

重写查询,以便分组集作为显式 GROUPING SETS 列表的一部分显示在 GROUP BY 子句中。例如,GROUP BY C1, (C2,…, Cn) 将会引发此错误。将该查询重写为 GROUP BY C1, GROUPING SETS( ((C2,…, Cn) ) 或 GROUP BY C1, (C2,…, Cn。

130

不能对包含聚合或子查询的表达式执行聚合函数。

重写查询,以便分组函数聚合或子查询不会显示为另一分组函数或聚合的参数。

147

聚合不应出现在 WHERE 子句中,除非该聚合位于 HAVING 子句或选择列表所包含的子查询中,并且要对其进行聚合的列是外部引用。

从 WHERE 子句中删除该分组函数或聚合。

157

聚合不应出现在 UPDATE 语句的集合列表中。

从 UPDATE 语句的集合列表中删除该分组函数或聚合。

158

聚合不应出现在 OUTPUT 子句中。

从 OUTPUT 子句中删除该分组函数或聚合。

162

TOP 子句中的表达式无效。

从 TOP 子句中删除该分组函数或聚合。

174

GROUPING 函数要求有 1 个参数。

修改 GROUPING () 函数的参数列表,以便刚好有 1 个参数。

175

聚合不应出现在计算列表达式或检查约束中。

从 DDL 语句中的计算列或 CHECK 约束中删除该分组函数或聚合。

189

GROUPING_ID 函数要求有 0 至 32 个参数。

将 GROUPING_ID () 函数的参数个数减少为 32 个或更少。

1015

聚合不能出现在 ON 子句中,除非该子句位于 HAVING 子句或选择列表所包含的子查询中,并且所聚合的列是外部引用。

从 ON 子句中删除该分组函数或聚合。

1028

在 GROUP BY ALL 子句中,不允许使用 CUBE、ROLLUP 和 GROUPING SETS 构造。

重写查询,以便不使用 GROUPING SETS、CUBE、ROLLUP、WITH CUBE 或 WITH ROLLUP 关键字指定 GROUP BY ALL 选项。

4101

位于 APPLY 右侧的聚合无法引用左侧的列。

从 APPLY 子句的右侧删除该分组函数或聚合。

4113

GROUPING | GROUPING_ID 不是有效的开窗函数,无法与 OVER 子句一起使用。

重写查询,以便 GROUPING () 或 GROUPING_ID () 函数不与 OVER 子句一起使用。

4142

RECEIVE 列表中不允许有聚合。

从 RECEIVE 列表中删除分组函数或聚合。

5310

INSERT 语句的 VALUES 列表中不允许聚合。

从 INSERT 语句的 VALUES 列表中删除该分组函数或聚合。

8161

[GROUPING | GROUPING_ID] 函数的参数 [n] 与 GROUP BY 子句中的任何表达式都不匹配。

检查以确保 GROUPING 或 GROUPING_ID 函数的每个参数均与 GROUP BY 子句中的分组元素相匹配,并且 GROUPING 或 GROUPING_ID 函数的所有元素的作用域均相同。

在下例中,子查询中对表 T(来自主查询)的引用将引发错误。

SELECT T.b, SUM(T.x)
FROM T
GROUP BY T.b 
HAVING EXISTS
(SELECT 1
FROM T1
GROUP BY T1.a
HAVING 
GROUPING_ID(T1.a, T.b) = 1
)

8661

无法对视图 <视图名称> 创建聚集索引 <索引名称>,因为索引键包含不在 GROUP BY 子句中的列。请考虑从索引键中消除不在 GROUP BY 子句中的列。

当视图定义包含仅含有总计元素 () 的 GROUP BY 子句时,无法创建索引视图。

10119

无法对视图 <视图名称> 创建聚集索引 <索引名称>,因为其中包含 CUBE、ROLLUP 或 GROUPING SETS 运算符。请考虑不对此视图进行索引。

当视图定义包含一般 GROUP BY 子句时,无法创建索引视图。

10702

WITH CUBE 和 WITH ROLLUP 选项不允许与 ROLLUP、CUBE 或 GROUPING SETS 规范一起使用。

重写查询,以便不存在非 ISO WITH CUBE 或 WITH ROLLUP 关键字与 ISO 兼容 GROUPING SETS、CUBE 或 ROLLUP 关键字的组合。

10703

分组集太多。最大数目为 4096。

将一般 GROUP BY 子句中分组集的个数减少为 4096 个或更少。

10706

GROUP BY 子句中指定的表达式太多。当提供了分组集时,最大数目为 32。

将一般 GROUP BY 子句中的非重复分组元素减少为 32 个或更少。

10708

当前兼容模式下不允许使用 CUBE() 和 ROLLUP() 分组构造。只有 100 或更高模式下才允许使用这些构造。

不能在 90 兼容模式下使用 CUBE () 和 ROLLUP ()。使用 WITH CUBE、WITH ROLLUP 或 GROUPING SETS 语法。