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 |
by: 发表于:2017-09-22 09:43:06 顶(0) | 踩(0) 回复
??
回复评论