Query calculo de incremento de precios %

Estimados, necesito de su amable ayuda.

Necesito crear un Query de la tabla de facturas OINV detallando los diferentes artículos que se hayan vendido con la peculiaridad de que debo mostrar el precio con que se vendió cada artículo y a la par la variación de incremento que tuvo en relación al precio anterior.

Los artículos no se deben repetir, la columna de precio debe mostrar el último precio con que se vendió dicho artículo y otra columna donde vaya el porcentaje de incremento que tuvo en relación al precio anterior diferente.

Estoy detenido pensando como lograr obtener el anterior precio diferente del artículo para el calculo del incremento…

Quedo atento a sus comentarios.
Gracias.

Hola compañero.

Tal vez podrías mostrar tus avances en el query y alguien del grupo @businessone o del foro en general podría darte algún tipo de orientación.

Seguimos atentos. :wink:

Que tal Gera!
Fíjate que no he logrado tener avances :sweat:
Estaba pensando usar un TOP 1 DESC dentro de un ciclo e ir guardando en una variable el precio del artículo para ir operando y sacar la diferencia contra el precio de la última factura y así poder saber en momento hubo incremento.

Solo me falta hacer la interpretación en código…

hola crea una consula formateada con este Query:

DECLARE @ITEMCODE NVARCHAR(15)
DECLARE @BASECARD NVARCHAR(15)
DECLARE @TABLA1 TABLE (BaseCard NVARCHAR(15), ItemCode NVARCHAR(15), Precio money , Fecha date)
DECLARE @TABLA2 TABLE (NumeroLinea int,BaseCard NVARCHAR(15), ItemCode NVARCHAR(15), Precio money , Fecha date)
DECLARE @TABLA3 TABLE(Precio money, Porcentaje numeric(5,2), NumLinea INT)
DECLARE @P1 MONEY
DECLARE @P2 MONEY
DECLARE @P3 MONEY
DECLARE @P4 MONEY
DECLARE @P5 MONEY

set @BASECARD = $[INV1.BaseCard]
SET @ITEMCODE = $[INV1.ItemCode]

INSERT @TABLA1
select TOP 5 BaseCard,ItemCode,Price,ActDelDate from INV1 where BaseCard = @BASECARD and ItemCode = @ITEMCODE ORDER BY ActDelDate DESC
insert @TABLA2
SELECT ROW_NUMBER() OVER(order by (select 1)) as row_number,* FROM @TABLA1
/ROW_NUMBER() OVER(order by (select 1)) as row_number/

SELECT * FROM @TABLA2

SET @P1= (SELECT Precio FROM @TABLA2 WHERE NumeroLinea = 1)
SET @P2= (SELECT Precio FROM @TABLA2 WHERE NumeroLinea = 2)
SET @P3= (SELECT Precio FROM @TABLA2 WHERE NumeroLinea = 3)
SET @P4= (SELECT Precio FROM @TABLA2 WHERE NumeroLinea = 4)
SET @P5= (SELECT Precio FROM @TABLA2 WHERE NumeroLinea = 5)

INSERT @TABLA3
SELECT Precio,(@P1/@P2)*100,NumeroLinea FROM @TABLA2 WHERE NumeroLinea = 1
UNION
SELECT Precio,(@P2/@P3)*100,NumeroLinea FROM @TABLA2 WHERE NumeroLinea = 2
UNION
SELECT Precio,(@P3/@P4)*100,NumeroLinea FROM @TABLA2 WHERE NumeroLinea = 3
UNION
SELECT Precio,(@P4/@P5)*100,NumeroLinea FROM @TABLA2 WHERE NumeroLinea = 4
UNION
SELECT Precio,(@P1/@P1)*100,NumeroLinea FROM @TABLA2 WHERE NumeroLinea = 5 ORDER BY NumeroLinea ASC

SELECT * FROM @TABLA3

Y me cuentas como te fue o si tienes alguna otra consulta. Saludos

1 me gusta

Este tema se cerró por inactividad por parte del autor.

Copia la URL de este debate, y abre un nuevo tema en #feedback si:

  • El autor del debate no marcó ninguna respuesta como solución, y tú crees tener la solución
  • Crees tener otra solución a la que actualmente está marcada.

Si, en cambio tienes una duda parecida a la que se debatió, o la misma duda, abre un nuevo tema en la categoría que corresponda y pon que el tema se debatió oportunamente (pega el enlace a este debate), así los otros lectores pueden saber de qué hablas.

Ayúdanos a tener una comunidad organizada.