J'essaie de reconstruire mon entreprise kardex. J'ai besoin d'utiliser la "méthode du coût moyen" qui est supposée prendre en compte le coût moyen pour chaque transaction sur son datetime spécifique.Reconstruire l'entreprise kardex
J'ai une table simple avec toutes les transactions d'inventaire entrantes/sortantes (tous les mouvements).
Chaque transaction entrante (achats) est correctement tarifée parce que je prends le coût unitaire de sa facture correspondante.
Le problème: Toutes les transactions de vente (inventaire sortant) n'ont AUCUN coût unitaire (parce que j'ai besoin de reconstruire ces coûts). Je sais que je peux utiliser des curseurs, mais nous connaissons tous les problèmes de performance.
J'ai préparé une simple donnée pour mieux m'expliquer. S'il vous plaît noter que toutes les ventes (transactions sortantes) n'a pas de coût, et je pense que l'aide de simples fonctions fenêtrées ne va pas aider parce que chaque rangée dépend du calcul précédent. Donc, j'ai besoin d'un calcul basé sur le calcul précédent .. ??
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
J'ai oublié de mentionner que j'utilise Microsoft SQL Server 2012 Standard –
Beau travail sur les données de test, Veuillez ajouter les résultats attendus sous forme de texte et expliquer avec lui – TheGameiswar