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;