Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Erreur de fonction d'agrégation lors de l'utilisation de la clause group by dans SQL

L'erreur est assez flagrante. Les colonnes non agrégées dans le SELECT d'une requête d'agrégation doivent correspondre aux clés. Dans votre requête, BILLDATE n'est pas agrégé et ce n'est pas une clé.

La solution simple est :

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

Si vous voulez une seule ligne par BILLNO -- ou si vous savez que BILLDATE est le même pour tous les BILLNO -- alors vous pouvez utiliser une fonction d'agrégation à la place :

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