SQL - Consulta suma continua que se reinicia

 
Vista:
sin imagen de perfil

Consulta suma continua que se reinicia

Publicado por juan (2 intervenciones) el 07/11/2021 12:14:19
Hola. Tengo una tabla de inventaro en la cual se pueden hacer regularizaciones de stock absolutas y relativas, es decir, puedo decir que el stock de un articulo es dos más que el existente (relativa) o que el stock es 4 (absoluta).

Si quiero calcular el stock actual si fueran todo regularizaciones absolutas seria tan facil como hacer una consulta con suma agregada.
Pongo un ejemplo. Primero solo con regularizaciones relativas. Con los siguientes datos:

Producto Cantidad Tiporegularizacion
1 2 relativa
2 1 relativa
1 3 relativa
5 4 relativa
1 8 relativa
1 3 relativa

Para el producto 1 hago una suma acumulada y en el último registro tengo el stock actual :16 o bien suma agregada de cantidad me daria tambien 16

Producto Cantidad Acumulado
1 2 2
1 3 5
1 8 13
1 3 16


Si ahora tengo que en el penultimo registro hago una regularización absoluta:
Producto Cantidad Tiporegularizacion
1 2 relativa
2 1 relativa
1 3 relativa
5 4 relativa
1 8 absoluta
1 3 relativa

No se como plantear que sume cantidad, pero que si es absoluta que resetee contador y siga sumando. En este caso para le producto 1 iria sumando 2+3 y al llegar al 8 como es absoluta resetea y en vez de 5 es 8 y sigue sumando la última que es relativa. Así ahora la suma es 11.

¿Alguien me puede ayudar en la sql que tengo que hacer?

P.D. No queiero hacer un procedimiento almacenado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Consulta suma continua que se reinicia

Publicado por juan (2 intervenciones) el 07/11/2021 21:40:50
Solucionado;
Para la tabla regularizaciones con los campos idproducto,fecha,cantidad,tiporegul, donde el tipo 2 es absoluta seria la siguiente consulta:


Select R.IDPRODUCTO,R.FECHA,R.cantidad,sum(R.CANTIDAD) OVER (PARTITION BY idproducto ORDER BY R.FECHA ASC) AS ACUMULADO
FROM REGULARIZACIONES R
WHERE R.FECHA>=(SELECT MAX(RR.FECHA) FROM REGULARIZACIONES RR WHERE RR.TipoRegul=2 and RR.IDPRODUCTO = R.IDPRODUCTO)
GROUP BY R.IDPRODUCTO,R.FECHA,R.CANTIDAD
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar