sql >> Databáze >  >> RDS >> Sqlserver

Chyba agregované funkce při použití klauzule seskupit v SQL

Chyba je celkem zřejmá. Neagregované sloupce v SELECT agregačního dotazu musí odpovídat klíčům. Ve vašem dotazu BILLDATE není agregováno a není to klíč.

Jednoduchá oprava je:

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

Pokud chcete pouze jeden řádek na BILLNO -- nebo pokud víte, že BILLDATE je stejný pro všechny BILLNO -- pak můžete místo toho použít funkci agregace:

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


  1. Přeskakujte tabulky v mysqldump na základě vzoru

  2. 10 technik pro vytváření formulářů v aplikaci Microsoft Access

  3. zranitelnosti mysql_escape_string

  4. Budoucnost zásobníku aplikací