Вложенный sum()
не требуется в предложении having
. Вероятно, вы захотите:
HAVING sum(a) + sum(b) > avg(a.inv)
Боковое примечание: всегда используются стандартные явные объединения, а не неявные объединения старого образца - и, как таковой, в вашем запросе отсутствует предложение WHERE
. Кроме того, понятные псевдонимы таблиц облегчают написание и чтение запроса. Я бы сформулировал это как:
SELECT
t.product pno,
substr(m.descriptn,1,40) pdesc,
avg(t.inv) i,
avg(t.badinv) q,
avg(t.wipc) invc,
avg(t.wipq) invq,
sum(a) suma,
sum(b) sumb,
sum(c) sumc,
sum(d) sumd
FROM temp2 t
INNER JOIN mastertbl m ON m.product = t.product
GROUP BY t.product, m.descriptn
HAVING HAVING sum(a) + sum(b) > avg(t.inv)
ORDER BY t.product
В этом многотабличном запросе вы должны квалифицировать все имена столбцов с таблицей, к которой они принадлежат: это относится к столбцам a
, b
, c
, d
.