【发布时间】:2019-11-11 22:48:19
【问题描述】:
我在 SQL Server 中有 3 个完全相同的表。我正在尝试编写一个存储过程来从 2 个表中获取 2 列的值,并用差异更新第 3 个表。这些是 3 个表:
我正在传递 rfds_processing_id。它类似于订单号,包含多行,因此必须对 rfds_processing_id、类型、扇区和位置进行匹配。
我需要匹配 3 个表中的每一行,然后从 Final.qty 中减去 Current.qty 的值,并用差值更新 Proposed.qty。它还需要用 Final.model 的值更新 Proposed.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
【问题讨论】:
-
请提供样本输入数据和所需的输出数据。
标签: sql-server