私は会社kardexを再構築しようとしています。特定の日時での各トランザクションの平均コストを考慮する「Average Cost Method」を使用する必要があります。再構築会社kardex
すべての着信/出庫トランザクション(すべての移動)を含む簡単なテーブルがあります。
すべての着信トランザクション(購入)は、対応する請求書から単価を徴収するため、正しく価格設定されています。
問題: すべての販売取引(出荷在庫)には単価がありません(これらのコストを再構築する必要があるため)。 私はカーソルを使うことができると知っていますが、私たちは皆そこでパフォーマンスの問題について知っています。
私は自分自身を説明するために簡単なデータを用意しました。 すべての販売(発信トランザクション)にはコストがかかりません。単純なウィンドウ関数を使用することは、各行が以前の計算に依存するため役立たないと考えています。だから、前回の計算に基づいて計算する必要があるのですか?
DECLARE @Resultado TABLE (Row_ID BIGINT IDENTITY NOT NULL PRIMARY KEY, Inventory_Name VARCHAR(100), Transaction_Date DATETIME, DIRECTION BIT, Transaction_Name VARCHAR(100),Transaction_Quantity INT, Transaction_UnitCost NUMERIC(18,2), Transaction_Amount NUMERIC(18,2), AVERAGE_UNITCOST_AT_TRANSACTION_DATE NUMERIC(18,2))
INSERT INTO @Resultado (Inventory_Name , Transaction_Date , DIRECTION , Transaction_Name , Transaction_Quantity , Transaction_UnitCost, Transaction_Amount, AVERAGE_UNITCOST_AT_TRANSACTION_DATE)
SELECT 'COMPUTER', '2017-01-01', 1, 'INCOMING PRODUCT; PRUCHASE', 100, 10, 100 * 10, 10
UNION ALL SELECT 'COMPUTER', '2017-01-02', 1, 'INCOMING PRODUCT; PURCHASE', 105, 11, 105 * 11, 10.51
UNION ALL SELECT 'COMPUTER', '2017-01-03', 1, 'INCOMING PRODUCT; PURCHASE', 110, 12, 110 * 12, 11.03
UNION ALL SELECT 'COMPUTER', '2017-01-04', 0, 'OUTGOING PRODUCT; SALES', -200, NULL, NULL, NULL
UNION ALL SELECT 'COMPUTER', '2017-01-05', 0, 'OUTGOING PRODUCT; SALES', -50, NULL, NULL, NULL
UNION ALL SELECT 'COMPUTER', '2017-01-06', 1, 'INCOMING PRODUCT; PURCHASE', 110, 10, 110 * 10, NULL
UNION ALL SELECT 'COMPUTER', '2017-01-07', 0, 'OUTGOING PRODUCT; SALES', -20, NULL, NULL, NULL
UNION ALL SELECT 'COMPUTER', '2017-01-08', 0, 'OUTGOING PRODUCT; SALES', -20, NULL, NULL, NULL
UNION ALL SELECT 'COMPUTER', '2017-01-09', 0, 'OUTGOING PRODUCT; SALES', -20, NULL, NULL, NULL
SELECT * FROM @Resultado
私はMicrosoft SQL Server 2012 Standardを使用していることを忘れていました –
テストデータでうまく動作します。予想通りの結果をテキストとして追加してください。 – TheGameiswar