Вычисление общего количества выполняемых операций в хранимых процедурах C# и SQL server
I have a table Laptops and with stored procedure I want calculate running total using INSERT AND UPDATE. I'm trying to calculate running total on the following way.
ALTER PROCEDURE [dbo].[spInsert_Inventory] ( @Brand Varchar(50), @Series Varchar(50), @Model Varchar(50), @Ram int, @HDD int, @Qty int, @Price int ) AS BEGIN IF NOT EXISTS (SELECT 1 FROM Laptops WHERE Brand=@Brand AND Series=@Series AND Model=@Model AND ram=@Ram AND hdd=@HDD ) BEGIN DECLARE @totale int=0,@ID int SELECT ID_Lap=@ID FROM Laptops set @totale= (@Price)*(@Qty) INSERT INTO Laptops VALUES (@Brand,@Series,@Model,@Ram,@HDD,isnull(@Qty,0),(isnull(@Price,0)),@totale) END ELSE BEGIN SET @totale = (SELECT SUM(@Price)*SUM(@Qty)FROM Laptops WHERE ID_Lap=@ID) UPDATE Laptops set qty=isnull(@Qty,0) , Price = (isnull(@Price,0)),Total=@totale WHERE Brand=@Brand AND Series=@Series AND Model=@Model AND ram=@Ram AND hdd=@HDD END END
Now, when I try insert new record and calculate running total my result is fine but when using update running total is not change column Total.
Что я уже пробовал:
Desired output:
Brand Series Model Ram HDD Qty Price Total AAA SAS DSS 200 25 3 3 9 BBB GFG KHH 50 65 5 20 100 AAA SAS DSS 200 25 22 3 75 BBB GFG KHH 50 65 5 10 150 BBB GFG KHH 50 65 2 4 158 AAA SAS DSS 200 25 2 5 85
CHill60
Приведите несколько примеров данных для настольных ноутбуков - непонятно, что вы пытаетесь сделать
Santosh kumar Pithani
ваш запрос на обновление-это хорошо, но проверить типы данных и использовать выход вставлен.кол-во,вставлен.тотале в ваш запрос на обновление, чтобы проверить цели.
Mike V Baker
Я не уверен, что понимаю это.. "Выберите SUM(@Price)*SUM(@Qty)из ноутбуков, где ID_Lap=@ID" ничего не выбирает из ноутбуков. Это вычисление пройденных в парамах, не так ли? То, что это, по-видимому, делает, устанавливает итоговую сумму в сумму этих значений на основе количества этих элементов, найденных в БД, независимо от того, какая цена и кол-во могут быть в этих записях.
Если вы измените его так, чтобы он действительно выбирал из записей ноутбуков, то вы должны помнить, что сумма(цена)*сумма(кол-во) не равна сумме(цена * кол-во). Например, если у вас есть две записи, кол-во 5 Цена $100 и кол-во 6 Цена $1, то 5 * 100 + 6 * 1 <> 11 * 101
Таблица желаемых выходных данных, по-видимому, собирает данные на основе бренда+серии+модели (и, возможно, Ram+HDD), но предложение WHERE использует ID_Lap. Является ли ID_Lap составным ключом этих элементов? Если нет, то вы получаете только одну запись, а не все записи с этими функциями.