GROUP_BY_AGGREGATE hata sınıfı

SQLSTATE: 42903

GROUP BYiçinde toplama işlevlerine izin verilmez, ancak <sqlExpr>bulunur.

Parametreler

  • sqlExpr: Toplama işlevi içeren ifade.

Açıklama

GROUP BY yan tümcesinin amacı, ayrı grup kümesini tanımlamaktır. Ardından her satır grubu, SELECT listesindeki toplama işlevleri kullanılarak tek bir satıra daraltılır. Son olarak, HAVING yan tümcesini kullanarak gruplandırılmış satırları filtreleyebilirsiniz.

sqlExpr, GROUP BY listesi veya SELECT yan tümcesi yerine HAVING yan tümcesinde bulunur.

Azaltma

Hatanın azaltılması nedene bağlıdır:

  • Doğru işlevi belirttiniz mi?

    sqlExpr değerini toplama işlevi olmayan uygun bir işlevle değiştirin.

  • İfadeyi toplamayı planlıyor musunuz?

    İfadeyi GROUP BY listesinden kaldırın ve SELECT listesine ekleyin.

  • Toplanan ifadeyi filtrelemeyi planlıyor musunuz?

    İfadeyi GROUP BY yan tümcesinden kaldırın ve BOOLEAN işlecini kullanarak HAVING yan tümcesine ekleyin.

Örnekler

-- 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