
Calculo del precio medio ponderado
Publicado por Pelidas (3 intervenciones) el 26/07/2023 01:35:25
Hola a todos
Tengo en SQL 2019 las siguientes tablas:
Quiero calcular el PMP donde las existencias iniciales son las existencias del ultimo inventario anterior a la fecha del movimiento de almacen a partir del cual quiero empezar a hacer el cálculo así el primer calculo sería
Para Id=1
-------------------------------------------------------------------------------
Ultima existencia X ultimo precio:
15X10.50=157.50
Primera entrada Id=1 el 02/07/2023
42X10.70=449.4
Valor en inventario+valor primer movimiento dividido por existencia final
(157.50+449.4)/(15+42)
luego para el Id=1 el precio ponderado sería:
PMP=606.9/57=10.64
Para Id=2
---------------------------------------------------------------------------
(15X10.50) + (42X10.70) + (42X10.80)=1060.5
15+42+42=99
PMP=1060.5/99=10.71
y así sucesivamente. He probado con LEAD, LAG, ORDER BY ROWS UNBOUNDED PRECEDING y no logro encontrar la solución, ¿ me podéis ayudar ?
Muchas gracias de antemano
Tengo en SQL 2019 las siguientes tablas:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
DECLARE @Inventario TABLE(
Fecha date DEFAULT '01/07/2023',
Articulo varchar(3) DEFAULT('AAA'),
Existencia INT,
Precio NUMERIC(8, 4)
);
INSERT INTO @Inventario (Existencia,Precio)
VALUES(15,10.50)
DECLARE @Diario TABLE(
Id INT IDENTITY,
Fecha DATE,
Articulo varchar(5) DEFAULT('AAA'),
Tipo_ES INT, -- 0: Entradas 1:Salidas
Cantidad INT,
Precio NUMERIC(8, 2)
);
INSERT @Diario(Fecha,Tipo_ES, Cantidad, Precio)
VALUES ('02/07/2023',0, 42, 10.70),
('02/07/2023',0, 42, 10.80),
('03/07/2023',0, 40, 11.00),
('03/07/2023',1, -5, 11.00),
('04/07/2023',1, -1, 11.00),
('05/07/2023',1, -30, 11.00),
('06/07/2023',0, 20, 10.50),
('06/07/2023',1, -10, 10.50);
Quiero calcular el PMP donde las existencias iniciales son las existencias del ultimo inventario anterior a la fecha del movimiento de almacen a partir del cual quiero empezar a hacer el cálculo así el primer calculo sería
Para Id=1
-------------------------------------------------------------------------------
Ultima existencia X ultimo precio:
15X10.50=157.50
Primera entrada Id=1 el 02/07/2023
42X10.70=449.4
Valor en inventario+valor primer movimiento dividido por existencia final
(157.50+449.4)/(15+42)
luego para el Id=1 el precio ponderado sería:
PMP=606.9/57=10.64
Para Id=2
---------------------------------------------------------------------------
(15X10.50) + (42X10.70) + (42X10.80)=1060.5
15+42+42=99
PMP=1060.5/99=10.71
y así sucesivamente. He probado con LEAD, LAG, ORDER BY ROWS UNBOUNDED PRECEDING y no logro encontrar la solución, ¿ me podéis ayudar ?
Muchas gracias de antemano
Valora esta pregunta


0