SQL команда не завершена должным образом добавление Необходимо ограничить набор данных для отображения - PullRequest
0 голосов
/ 05 августа 2020

Я работаю над ограничением набора данных, чтобы он включал только строки, в которых сумма (a) + сумма (b)> avg (a.inv), что я здесь делаю не так?

`SELECT a.product pno,substr(b.descriptn,1,40) pdesc, 
avg(a.inv) i,avg(a.badinv) q, avg(a.wipc) invc, avg(a.wipq) 
invq, sum(a) suma, sum(b) sumb, sum(c) sumc, sum(d) sumd
FROM temp2 a, mastertbl b 
a.product =b.product 
GROUP BY a.product, b.descriptn 
HAVING sum(sum(a)+sum(b)) > avg(a.inv)
ORDER BY a.product;`

Ответы [ 2 ]

2 голосов
/ 05 августа 2020

Вложенный 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.

0 голосов
/ 05 августа 2020

Мое предложение:

SELECT *
  FROM
  (
    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 ) 
WHERE suma + sumb > i
ORDER BY pno
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...