У меня в SQL Server 3 одинаковые таблицы. Я пытаюсь написать хранимую процедуру, чтобы получить значение 2 столбцов из 2 таблиц и обновить 3-ю таблицу с разницей. Это 3 таблицы:
Текущее
Предлагаемый
Final
Я передаю rfds_processing_id. Он похож на номер заказа и содержит несколько строк, поэтому необходимо выполнить сопоставление по rfds_processing_id, типу, сектору и позиции.
Мне нужно сопоставить каждую строку из 3 таблиц, а затем вычесть значение Current.qty из Final.qty и обновить Proposed.qty с разницей. Также необходимо обновить Proposed.model со значением Final.model (когда Proposed.qty> 0). В настоящее время он устанавливает в каждой строке одно и то же значение. Я предполагаю, что мне нужно перебрать строки. Как это должно выглядеть?
ALTER PROCEDURE [dbo].[CalculateProposedAntennas]
(
@rfds_processing_id uniqueidentifier = null,
@id uniqueidentifier OUTPUT
)
AS
BEGIN
SET NOCOUNT ON
UPDATE P
SET qty = (F.qty - C.qty) , model = F.model
FROM Proposed_Antenna P
INNER JOIN Final_Antenna F
ON P.rfds_processing_id = F.rfds_processing_id
INNER JOIN Current_Antenna C
ON F.rfds_processing_id = C.rfds_processing_id
WHERE
F.rfds_processing_id = C.rfds_processing_id
AND F.sector = C.sector
AND F.type = C.type
AND F.position = C.position
RETURN
END