John Th Ответов: 2

Как я могу получить сумму stocks_qty каждого продукта


Эй. Я просто не знаю, как исправить эту ошибку. Я хочу получить сумму stocks_qty.

Стол:

CREATE TABLE tblproducts (
	product_barcode varchar(50) PRIMARY KEY NOT NULL,
	product_name varchar(50) NOT NULL,
	product_sprice int NOT NULL,
	product_type varchar(50) NOT NULL,
	product_supplier varchar(50) NOT NULL,
	product_unit varchar (50) NOT NULL
);

CREATE TABLE tblstocks (
	stocks_id int IDENTITY(1,1) PRIMARY KEY NOT NULL,
	stocks_qty int NOT NULL,
	stocks_status varchar(50) NOT NULL,
	stocks_date varchar(100) NOT NULL,
	stocks_expiration varchar(100) NOT NULL,
	product_barcode varchar(50) NOT NULL FOREIGN KEY REFERENCES tblproducts(product_barcode)
);

Но я получил эту ошибку:
Column 'tblproducts.product_barcode' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.


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

SELECT tp.*, SUM(ts.stocks_qty) AS Stocks FROM tblproducts AS tp LEFT JOIN tblstocks AS ts ON ts.product_barcode = tp.product_barcode GROUP BY ts.product_barcode;

2 Ответов

Рейтинг:
11

Maciej Los

Ну, сообщение об ошибке не требует объяснений! Вы должны добавить все поля из tblproducts таблица, которая используется в инструкции SELECT, или вы должны указать столько имен полей, сколько хотите отобразить. Это решит вашу проблему:

SELECT tp.product_barcode, SUM(ts.stocks_qty) AS Stocks
FROM tblproducts AS tp LEFT JOIN tblstocks AS ts ON ts.product_barcode = tp.product_barcode
GROUP BY ts.product_barcode;


Другой способ-использовать функцию SUM с помощью За предложение[^], видеть: Агрегатные функции SQL Server с предложением OVER | PTR[^]