Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Грешка в агрегатната функция при използване на група по клауза в SQL

Грешката е доста очевидна. Неагрегираните колони в SELECT на заявка за агрегиране трябва да съответства на ключовете. Във вашата заявка BILLDATE не е агрегиран и не е ключ.

Простата корекция е:

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

Ако искате само един ред на BILLNO -- или ако знаете, че BILLDATE е еднакъв за всички BILLNO -- тогава можете да използвате функция за агрегиране вместо това:

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. Как работи функцията FORMAT() в SQL Server (T-SQL)

  2. Проблем със закръгляването във функциите LOG и EXP

  3. SQL заявка за групиране по ден

  4. Как да използвате use if..else в Data Flow въз основа на стойности на потребителски променливи в SSIS

  5. CLR:Multi Param Aggregate, аргументът не е в крайния изход?