Я столкнулся с проблемой.У меня есть две таблицы FreshStock
и PurchaseInvoiceDetails
.
Когда новый продукт получен, он входит в PurchaseInvoiceDetails
, и я хочу, чтобы он также вошел во вторую таблицу.
У меня есть код, который сначала проверяет, не был ли продукт добавлен вFreshStock
, затем он сначала добавляет его, но если он уже добавил его, он обновляет его по ProductName.Я получаю сообщение об ошибке при обновлении:
Сообщение 512, Уровень 16, Состояние 1, Строка 13
Подзапрос возвратил более 1 значения.Это недопустимо, если подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется в качестве выражения.Заявление было прекращено.
Мой код:
IF NOT EXISTS(SELECT * FROM [dbo].[FreshStock] WHERE [ProductName] = 'Makki Rusk')
BEGIN
INSERT INTO [dbo].[FreshStock] ([ProductCode], [ProductName], [Stock],[IsAvailable])
SELECT [ProductCode], [ProductName], SUM([Box]), 1
FROM [dbo].[PurchaseInvoiceDetails]
WHERE ProductName = 'Makki Rusk'
GROUP BY [ProductCode],[ProductName]
RETURN
END
IF EXISTS(SELECT * FROM [dbo].[FreshStock] WHERE [ProductName] = 'Makki Rusk')
BEGIN
UPDATE [dbo].[FreshStock]
SET [ProductCode] = (SELECT [ProductCode]
FROM [dbo].[PurchaseInvoiceDetails]
WHERE [ProductName] = 'Makki Rusk'),
[ProductName] = (SELECT [ProductName]
FROM [dbo].[PurchaseInvoiceDetails]
WHERE [ProductName] = 'Makki Rusk'),
[Stock] = (SELECT SUM([Box])
FROM [dbo].[PurchaseInvoiceDetails]
WHERE [ProductName] = 'Makki Rusk')
WHERE ProductName = 'Makki Rusk'
END