Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Aggregatfunktionsfehler bei Verwendung der Group by-Klausel in SQL

Der Fehler ist ziemlich offensichtlich. Die nicht aggregierten Spalten in SELECT einer Aggregationsabfrage müssen mit den Schlüsseln übereinstimmen. In Ihrer Abfrage BILLDATE wird nicht aggregiert und ist kein Schlüssel.

Die einfache Lösung ist:

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

Wenn Sie nur eine Zeile pro BILLNO wollen -- oder wenn Sie das kennen BILLDATE ist für alle BILLNO gleich -- dann können Sie stattdessen eine Aggregationsfunktion verwenden:

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