Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Mängdfunktioner tillåts inte i GROUP BY, men hittade <sqlExpr>.
Parameters
- sqlExpr: Uttryck som innehåller en mängdfunktion.
Förklaring
Syftet med GROUP BY-satsen är att identifiera uppsättningen distinkta grupper.
Varje grupp med rader komprimeras sedan till en enskild rad med hjälp av aggregeringsfunktioner i SELECT listan.
Slutligen kan du filtrera de grupperade raderna med hjälp av satsen HAVING.
sqlExpr finns i GROUP BY-satsen i stället för SELECT-listan eller HAVING-satsen.
Mitigation
Åtgärdandet av felet beror på orsaken:
Har du angett rätt funktion?
Ersätt
sqlExprmed en lämplig funktion som inte är en aggregeringsfunktion.Tänker du aggregera uttrycket?
Ta bort uttrycket från
GROUP BYoch lägg till det i listanSELECT.Tänker du filtrera på det aggregerade uttrycket?
Ta bort uttrycket från
GROUP BY-satsen och lägg till det med hjälp av enBOOLEAN-operator iHAVING-satsen.
Exempel
-- 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