sql >> Databasteknik >  >> RDS >> Sqlserver

Aggregerat funktionsfel vid användning av group by-sats i SQL

Felet är ganska uppenbart. De oaggregerade kolumnerna i SELECT av en aggregeringsfråga måste matcha nycklarna. I din fråga, BILLDATE är inte aggregerad och det är inte en nyckel.

Den enkla korrigeringen är:

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

Om du bara vill ha en rad per BILLNO -- eller om du vet det BILLDATE är samma för alla BILLNO -- då kan du använda en aggregeringsfunktion istället:

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


  1. Lead och Lag-funktion i Mysql

  2. FEL:Fel 1005:Kan inte skapa tabell (errnr:121)

  3. Oracle-tabell dynamisk partition

  4. postgres rekursiv fråga i samma tabell