sql >> Database >  >> RDS >> Sqlserver

Geaggregeerde functiefout tijdens het gebruik van group by-clausule in SQL

De fout is vrij duidelijk. De niet-geaggregeerde kolommen in de SELECT van een aggregatiequery moeten overeenkomen met de sleutels. In uw zoekopdracht, BILLDATE wordt niet geaggregeerd en is geen sleutel.

De eenvoudige oplossing is:

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

Als u slechts één rij per BILLNO . wilt -- of als je weet dat BILLDATE is hetzelfde voor alle BILLNO -- dan kunt u in plaats daarvan een aggregatiefunctie gebruiken:

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


  1. SELECT op JSONField met Django

  2. Chronische verouderde resultaten met MySQLdb in Python

  3. Hoe een auto-increment-ID toe te voegen volgens een groep in mysql

  4. Mamp localhost lost erg langzaam op