Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Errore di funzione aggregata durante l'utilizzo della clausola group by in SQL

L'errore è abbastanza evidente. Le colonne non aggregate in SELECT di una query di aggregazione devono corrispondere alle chiavi. Nella tua richiesta, BILLDATE non è aggregato e non è una chiave.

La soluzione semplice è:

SELECT BILLNO, BILLDATE,
       SUM(QTY) AS SUMQTY,
       SUM(AMOUNT) AS SUMAMOUNT
FROM PURCHASE
GROUP BY BILLNO, BILLDATE;

Se vuoi solo una riga per BILLNO -- o se conosci quel BILLDATE è lo stesso per tutti i BILLNO -- allora puoi invece usare una funzione di aggregazione:

SELECT BILLNO, MAX(BILLDATE) as BILLDATE,
       SUM(QTY) AS SUMQTY,
       SUM(AMOUNT) AS SUMAMOUNT
FROM PURCHASE
GROUP BY BILLNO;