Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le funzioni di aggregazione non sono consentite in GROUP BY, ma sono state trovate <sqlExpr>.
Parametri
- sqlExpr: espressione contenente una funzione di aggregazione.
Spiegazione
Lo scopo della clausola GROUP BY è identificare il set di gruppi distinti.
Ogni gruppo di righe viene quindi compresso in una singola riga usando funzioni di aggregazione nell'elenco SELECT.
Infine, è possibile filtrare le righe raggruppate usando la clausola HAVING.
Il sqlExpr si trova nella clausola GROUP BY anziché nella clausola SELECT o HAVING.
Mitigazione
La mitigazione dell'errore dipende dalla causa:
È stata specificata la funzione corretta?
Sostituire
sqlExprcon una funzione appropriata che non è una funzione di aggregazione.Intendi aggregare l'espressione?
Rimuovere l'espressione dal
GROUP BYe aggiungerla all'elenco diSELECT.Hai intenzione di filtrare l'espressione aggregata?
Rimuovere l'espressione dalla clausola
GROUP BYe aggiungerla usando un operatoreBOOLEANalla clausolaHAVING.
Esempi
-- 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