Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
No se permiten funciones de agregado en GROUP BY, pero se ha encontrado <sqlExpr>.
Parámetros
- sqlExpr: expresión que contiene una función de agregado.
Explicación
El propósito de la cláusula GROUP BY es identificar el conjunto de grupos distintos.
A continuación, cada grupo de filas se consolida en una sola fila mediante funciones de agregado de la lista SELECT.
Por último, puede filtrar las filas agrupadas mediante la cláusula HAVING.
El sqlExpr se encuentra en la cláusula GROUP BY en lugar de en la lista SELECT o la cláusula HAVING.
Mitigación
La mitigación del error depende de la causa:
¿Especificó la función correcta?
Reemplace
sqlExprpor una función adecuada que no sea una función de agregado.¿Tiene previsto agregar la expresión?
Quite la expresión de
GROUP BYy agréguala a la lista deSELECT.¿Tiene previsto filtrar por la expresión agregada?
Quite la expresión de la cláusula
GROUP BYy agréguela mediante un operadorBOOLEANa la cláusulaHAVING.
Ejemplos
-- An aggregation in the GROUP BY clause
> SELECT a FROM VALUES(1, 2), (1, 3) AS T(a, b) GROUP BY a, sum(b);
[GROUP_BY_AGGREGATE] Aggregate functions are not allowed in GROUP BY, but found sum(T.b).; line 1 pos 58;
-- Move the expression to the SELECT list
> SELECT a, sum(b) FROM VALUES(1, 2), (1, 3) AS T(a, b) GROUP BY a;
1 5
-- An aggregation in the GROUP BY clause
> SELECT a, sum(b) FROM VALUES(1, 2), (1, 3), (2, 1) AS T(a, b) GROUP BY a, sum(b) > 1;
[GROUP_BY_AGGREGATE] Aggregate functions are not allowed in GROUP BY, but found (sum(T.b) > CAST(1 AS BIGINT)).; line 1 pos 74;
-- Move the expression to the HAVING clause
> SELECT a, sum(b) FROM VALUES(1, 2), (1, 3), (2, 1) AS T(a, b) GROUP BY a HAVING sum(b) > 1;
1 5