Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Erro de função agregada ao usar a cláusula group by no SQL


O erro é bastante óbvio. As colunas não agregadas no SELECT de uma consulta de agregação precisam corresponder às chaves. Em sua consulta, BILLDATE não é agregado e não é uma chave.

A correção simples é:
SELECT BILLNO, BILLDATE,
       SUM(QTY) AS SUMQTY,
       SUM(AMOUNT) AS SUMAMOUNT
FROM PURCHASE
GROUP BY BILLNO, BILLDATE;

Se você quiser apenas uma linha por BILLNO -- ou se você souber que BILLDATE é o mesmo para todos os BILLNO -- então você pode usar uma função de agregação:
SELECT BILLNO, MAX(BILLDATE) as BILLDATE,
       SUM(QTY) AS SUMQTY,
       SUM(AMOUNT) AS SUMAMOUNT
FROM PURCHASE
GROUP BY BILLNO;