下面的示例捕獲從 MERGE 語句的 OUTPUT 子句返回的數據,并將該數據插入到另一個表中。 MERGE 語句根據在 SalesOrderDetail 表中處理的訂單更新 ProductInventory 表的 Quantity 列。 本示例捕獲已更新的行并將這些行插入到用于跟蹤庫存變化的另一個表中。
下面的示例捕獲從 MERGE 語句的 OUTPUT 子句返回的數據,并將該數據插入到另一個表中。 MERGE 語句根據在 SalesOrderDetail 表中處理的訂單更新 ProductInventory 表的 Quantity 列。 本示例捕獲已更新的行并將這些行插入到用于跟蹤庫存變化的另一個表中。
<無> $velocityCount-->USE AdventureWorks2012; GO CREATE TABLE Production.UpdatedInventory (ProductID INT NOT NULL, LocationID int, NewQty int, PreviousQty int, CONSTRAINT PK_Inventory PRIMARY KEY CLUSTERED (ProductID, LocationID)); GO INSERT INTO Production.UpdatedInventory SELECT ProductID, LocationID, NewQty, PreviousQty FROM ( MERGE Production.ProductInventory AS pi USING (SELECT ProductID, SUM(OrderQty) FROM Sales.SalesOrderDetail AS sod JOIN Sales.SalesOrderHeader AS soh ON sod.SalesOrderID = soh.SalesOrderID AND soh.OrderDate BETWEEN '20030701' AND '20030731' GROUP BY ProductID) AS src (ProductID, OrderQty) ON pi.ProductID = src.ProductID WHEN MATCHED AND pi.Quantity - src.OrderQty >= 0 THEN UPDATE SET pi.Quantity = pi.Quantity - src.OrderQty WHEN MATCHED AND pi.Quantity - src.OrderQty <= 0 THEN DELETE OUTPUT $action, Inserted.ProductID, Inserted.LocationID, Inserted.Quantity AS NewQty, Deleted.Quantity AS PreviousQty) AS Changes (Action, ProductID, LocationID, NewQty, PreviousQty) WHERE Action = 'UPDATE'; GO
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com