1

例えば 売上表どのようにSQL Server内の前の行データを更新する

SlNo Inventorycode Cost Date 

1. 100001  1.8 01/01/2017 
2. 100002  2.3 01/01/2017 
3. 100002  3.5 02/01/2017 
4. 100001  2.5 03/01/2017 

在庫表

SlNO InventoryCode Cost Date 
1. 100001    01/01/2017 
2. 100002    01/01/2017 
3. 100001    01/01/2017 
4. 100002    02/01/2017 
5. 100001    01/01/2017 
6. 100002    03/01/2017 

上記のデータから、私はstocktableにSalestableのコストを更新します懸念事項ItemCodeとdate.Af懸念日に売上が発生した場合、私は(StockTable)前の日付のコストのコストを更新したいです。

+0

SlNoが列 – lostmylogin

+0

希望の出力を表示できますか? – gotqn

+0

迅速なテストのためにスキーマとデータを共有できればうれしいです – lostmylogin

答えて

1

あなたがこれを行うにしようとしています:

DECLARE @Sales TABLE 
(
    [SLNo] TINYINT 
    ,[Inventorycode] INT 
    ,[Cost] DECIMAL(9,1) 
    ,[Date] DATE 
); 


DECLARE @Stock TABLE 
(
    [SLNo] TINYINT 
    ,[Inventorycode] INT 
    ,[Cost] DECIMAL(9,1) 
    ,[Date] DATE 
); 

INSERT INTO @Sales ([SLNo], [Inventorycode], [Cost], [Date]) 
VALUES (1, 100001, 1.8, '01/01/2017') 
     ,(2, 100002, 2.3, '01/01/2017') 
     ,(3, 100002, 3.5, '02/01/2017') 
     ,(4, 100001, 2.5, '03/01/2017'); 

INSERT INTO @Stock ([SLNo], [Inventorycode], [Date]) 
VALUES (1, 100001, '01/01/2017') 
     ,(2, 100002, '01/01/2017') 
     ,(3, 100001, '01/01/2017') 
     ,(4, 100002, '02/01/2017') 
     ,(5, 100001, '01/01/2017') 
     ,(6, 100002, '03/01/2017'); 

UPDATE @Stock 
SET [Cost] = DS.[Cost] 
FROM @Stock A 
OUTER APPLY 
(
    SELECT TOP 1 B.[Cost] 
    FROM @Sales B 
    WHERE B.[Inventorycode] = A.[Inventorycode] 
     AND B.[Date] <= A.[Date] 
    ORDER BY B.[Date] DESC 
) DS; 

SELECT * 
FROM @Stock; 

enter image description here

0
私はそれをテストしていませんが、これはあなたが迅速なテストのためのスキーマとデータを共有することができればそれはいいだろう

UPDATE stocktable 
SET Cost = (
     SELECT TOP 1 Cost 
     FROM SalesTable st 
     WHERE st.Inventorycode = StockTable.Inventorycode 
      AND st.DATE <= StockTable.DATE 
     ORDER BY DATE DESC 
     ) 
FROM StockTable 

を動作するはず

0
update st set cost = sl.cost from stock_table st 
inner join sales_table sl on sl.Inventory_Code=st.Inventory_Code 
and sl.Date = st.Date 
関連する問題