Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Błąd funkcji agregującej podczas używania klauzuli group by w SQL

Błąd jest dość oczywisty. Niezagregowane kolumny w SELECT zapytania agregującego muszą być zgodne z kluczami. W zapytaniu BILLDATE nie jest zagregowana i nie jest kluczem.

Prosta poprawka to:

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

Jeśli chcesz tylko jeden wiersz na BILLNO -- lub jeśli wiesz, że BILLDATE jest taki sam dla wszystkich BILLNO -- możesz zamiast tego użyć funkcji agregacji:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Filtrowanie zapytań SQL według listy parametrów

  2. Pobieranie n-tego elementu od ostatniego w xml na serwerze Sql

  3. SQL Server 2008:TOP 10 i wyróżniające się razem

  4. Jak mogę uzyskać zrzut SQL bazy danych SQL Server 2008?

  5. nie można połączyć się z komputerem nazwa\SQLEXPRESS