|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() vincent howardChef de projet en SSII Inscription : septembre 2008 Messages : 117 ![]() |
Bonjour à tous,
je voudrais calculer un pmpa à partir d'une table mouvement de stock, et ce de manière dynamique, est-ce que quelqu'un a une idée ou un début de piste pour info un pmpa est un prix moyen pondéré d'achat voici un exemple de calcul de pmpa : ligne 1 qté=10 prix=1.00 pmp=1.00 ligne 2 qté=-3 pmp=toujours 1.00 ligne 3 qté=10 prix=2.00 pmp=1.63 (cad (7*1 + 10*2) / 17 ... est-ce que c'est possible avec une seule requête merci d'avance pour vos réponses |
|
|
00
|
|
|
#2 | |
|
Membre Expert
![]() |
Citation:
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() vincent howardChef de projet en SSII Inscription : septembre 2008 Messages : 117 ![]() |
c'est pas grave, disons que le résultat (une moyenne mettons) doit être calculé à partir des lignes n-1 et ainsi de suite
|
|
|
00
|
|
|
#4 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 723 ![]() |
De quelles informations disposez vous dans votre table des transactions ?
Avez vous un PMP de base ? ++ |
|
00
|
|
|
#5 |
|
Membre habitué
![]() vincent howardChef de projet en SSII Inscription : septembre 2008 Messages : 117 ![]() |
Bonjour,
merci pour votre aide je dispose de la quantité mouvementée et du prix, à partir de là je dois calculer le stock et le pmp au fil de l'eau mvt no 1 qté mouvementée = 10 prix = 1 stock restant = 10 pmp = 1 mvt no 2 qté mouvementée = -3 prix = null stock restant = 7 pmp = 1 mvt no 3 qté mouvementée = 10 prix = 2 stock restant = 17 pmp = 1.59 le stock c'est facile à comprendre, le pmp 1.59 est obtenu comme ceci : (valeur stock n-1 + valeur stock n) / (stock n-1 + stock n) soit (7.00 + 20.00) / (7 + 10) = 1.59 |
|
|
00
|
|
|
#6 | ||
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 723 ![]() |
Ah ben oui un PMP .. forcément la 1ere valeur correspond forcément au 1er prix d'achat
Vous pouvez essayer ceci : Code :
|
||
|
00
|
|
|
#7 |
|
Membre habitué
![]() vincent howardChef de projet en SSII Inscription : septembre 2008 Messages : 117 ![]() |
malheureusement je suis sur 2000, j'ai l'impression que les CTE ne passent pas
|
|
|
00
|
|
|
#8 | ||
|
Membre habitué
![]() vincent howardChef de projet en SSII Inscription : septembre 2008 Messages : 117 ![]() |
je valide la réponse, j'ai essayé sur un sql2008 et ça passe
merci encore, ça me servira de tte façon pour ma base 2000 j'ai fais donc une fonction avec renvoi de table, pour ceux que ça interesse voici : Code :
|
||
|
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour,
Je n'ai pas tout compris le mode de calcul (dans votre exemple, valeur stock n = 17 * 2 = 34 et non 20 ?) , mais si on considère plutôt (valeur stock n-1 + valeur mouvement n) / (stock n-1 + qte mouvementée n) , on peut faire comme ceci + qté mouvementée = stock n) Code SQL :
Je me suis basé sur les id pour "l'ordre" des mouvements, mais visiblement vous avez une colonne date, basez vous dessus. Comme je disais, je ne suis pas certain du calcul, le résultat de la requête ci-dessus est donc peut être faux, mais vous pouvez l'adapter sur le même principe pour vous passer de votre curseur... |
||
|
|
00
|
|
|
#10 |
![]() ![]() Administrateur de base de données Inscription : août 2007 Messages : 1 158 ![]() |
Comment le stock est il gerer ?
Lors de votre mouvement en sortie, le prix n'est pas indique. Est il gere en FIFO (first-in-first-out) ou bien en LIFO (last-in-last-out) ? Cela aura un impact sur votre PMP par la suite... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com