Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kesalahan fungsi agregat saat menggunakan grup demi klausa dalam SQL

Kesalahannya cukup jelas. Kolom yang tidak diagregasi di SELECT kueri agregasi harus cocok dengan kunci. Dalam kueri Anda, BILLDATE tidak diagregasi dan bukan kunci.

Perbaikan sederhananya adalah:

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

Jika Anda hanya menginginkan satu baris per BILLNO -- atau jika Anda mengetahui BILLDATE adalah sama untuk semua BILLNO -- maka Anda dapat menggunakan fungsi agregasi sebagai gantinya:

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. Referensi Prosedur tersimpan untuk semua database di server

  2. Kapan kolom yang dihitung sesuai?

  3. Lakukan regex (ganti) dalam kueri SQL

  4. Ubah jenis kolom dalam tabel besar

  5. Ambil/pilih nilai dari beberapa baris menjadi 1 baris tunggal di server sql