John Th Ответов: 3

Как мне получить общее количество акций, если оно меньше или равно 10


Привет, ребята. Что плохого в этом коде? Я пытаюсь получить общее количество акций, если они меньше или равны 10. Но я получил эту ошибку:

An aggregate may not appear in the WHERE clause unless it is in a subquery contained in a HAVING clause or a select list, and the column being aggregated is an outer reference.


Что я уже пробовал:

SELECT tp.product_barcode, tp.product_name, tp.product_supplier, tp.product_type, SUM(ts.stocks_qty) FROM tblproducts AS tp " & _
                "INNER JOIN tblstocks AS ts ON ts.product_barcode = tp.product_barcode WHERE SUM(ts.stocks_qty) < 10 GROUP BY tp.product_barcode, " & _
                "tp.product_name, tp.product_supplier, tp.product_type;

3 Ответов

Рейтинг:
7

Richard Deeming

Другая альтернатива:

SELECT tp.product_barcode, tp.product_name, tp.product_supplier, tp.product_type, SUM(ts.stocks_qty) 
FROM tblproducts AS tp
INNER JOIN tblstocks AS ts ON ts.product_barcode = tp.product_barcode 
GROUP BY tp.product_barcode, tp.product_name, tp.product_supplier, tp.product_type
HAVING SUM(ts.stocks_qty) < 10;

Наличие (Transact-SQL) | Microsoft Docs[^]


Рейтинг:
1

Doncal

SELECT tp.product_barcode, tp.product_name, tp.product_supplier, tp.product_type, stocks_qty_total
  FROM tblproducts AS tp 
INNER JOIN (
	Select product_barcode, SUM(stocks_qty) AS stocks_qty_total
	From tblStocks
	Group by product_barcode) AS ts ON ts.product_barcode = tp.product_barcode
WHERE stocks_qty_total < 10
GROUP BY tp.product_barcode, tp.product_name, tp.product_supplier, tp.product_type;