GESTION
Publicado por LULU (1 intervención) el 26/12/2008 16:29:32
Buenos días, espero que el niño Dios le haya traido mucha salud paz y felicidad,
Tengo conocimiento basico en SQL no mucha experiencia en desarrrollar en SQL y menos Transact.
Me podrías ayudar con las dudas???
Este es el dasarrollo y tengo dudas referente al uso del IF, podrías verificar si el como lo estoy utilizando está correcto?...leo un registro del cual necesito restar una fecha anterior de la actual y multiplicar por el inventario,
Agradecida y Saludos.
---------------------->
DECLARE @FECINI datetime, @FECFIN datetime, @ItemCode nvarchar(20), @ItemName nvarchar(40), @OnHand numeric(19, 6), @Price decimal(10,3), @VCODIGO nvarchar(20), @VPRECIO decimal(10,3), @VAUM_DISM decimal(10,3), @VGANA_PERD numeric(19, 6), @VTOTAL numeric(19, 6)
DECLARE @TABLACAMBIOPREC TABLE (FECINI datetime, FECFIN datetime, ItemCode nvarchar(20), ItemName nvarchar(40), OnHand numeric(19, 6) , VAUM_DISM decimal (10,3), VGANA_PERD numeric(19, 6), VTOTAL numeric(19, 6) )
-- Declaración del cursor
DECLARE cDataPrecios2 CURSOR FOR
SELECT T2.[U_FECHA_INI], T2.[U_FECHA_FIN], T0.[ItemCode], T3.[ItemName], T0.[OnHand], T1.[Price] FROM OITW T0 INNER JOIN ITM1 T1 ON T0.ItemCode = T1.ItemCode INNER JOIN OPLN T2 ON T2.Factor = T1.Factor INNER JOIN OITM T3 ON T0.ItemCode = T3.ItemCode
WHERE T0.[WhsCode] =[%0] AND T2.[U_FECHA_INI] > =[%1] and T2.[U_FECHA_FIN] < =[%2] and T0.[ItemCode] LIKE 'C%'
OPEN cDataPrecios2
-- Lectura de la primera fila del cursor
FETCH cDataPrecios2 INTO @FECINI, @FECFIN, @ItemCode, @ItemName, @OnHand, @Price
set @VCODIGO = @ItemCode
WHILE (@@FETCH_STATUS = 0 )
BEGIN
If (@VCODIGO = @ItemCode)
SET @VPRECIO = @Price
If (@Price <> @VPRECIO)
BEGIN
SET @VAUM_DISM = @VPRECIO - @Price
SET @VGANA_PERD = @VAUM_DISM * @OnHand
END
BEGIN
INSERT INTO @TABLACAMBIOPREC (FECINI, FECFIN, ItemCode, ItemName, OnHand, VAUM_DISM, VGANA_PERD, VTOTAL )
VALUES ( @FECINI, @FECFIN, @ItemCode, @ItemName, @OnHand, @VAUM_DISM, @VGANA_PERD, @VTOTAL)
FETCH cDataPrecios2 INTO @FECINI, @FECFIN, @ItemCode, @ItemName, @OnHand, @Price
END
set @VCODIGO = @ItemCode
INSERT INTO @TABLACAMBIOPREC (FECINI, FECFIN, ItemCode, ItemName, OnHand, VAUM_DISM, VGANA_PERD, VTOTAL )
VALUES (@FECINI, @FECFIN, @ItemCode, @ItemName, @OnHand, @VAUM_DISM, @VGANA_PERD, @VTOTAL)
END
-- Cierre del cursor
CLOSE cDataPrecios2
-- Liberar los recursos
DEALLOCATE cDataPrecios2
select FECINI, FECFIN, ItemCode AS Codigo_Producto, ItemName AS Nombre_Producto, OnHand as Volumen, VAUM_DISM AS Aum_Dism, VGANA_PERD AS Ganancia_Perdida, VTOTAL AS TOTAL from @TABLACAMBIOPREC
--------------------------------------------------------------------------------
Tengo conocimiento basico en SQL no mucha experiencia en desarrrollar en SQL y menos Transact.
Me podrías ayudar con las dudas???
Este es el dasarrollo y tengo dudas referente al uso del IF, podrías verificar si el como lo estoy utilizando está correcto?...leo un registro del cual necesito restar una fecha anterior de la actual y multiplicar por el inventario,
Agradecida y Saludos.
---------------------->
DECLARE @FECINI datetime, @FECFIN datetime, @ItemCode nvarchar(20), @ItemName nvarchar(40), @OnHand numeric(19, 6), @Price decimal(10,3), @VCODIGO nvarchar(20), @VPRECIO decimal(10,3), @VAUM_DISM decimal(10,3), @VGANA_PERD numeric(19, 6), @VTOTAL numeric(19, 6)
DECLARE @TABLACAMBIOPREC TABLE (FECINI datetime, FECFIN datetime, ItemCode nvarchar(20), ItemName nvarchar(40), OnHand numeric(19, 6) , VAUM_DISM decimal (10,3), VGANA_PERD numeric(19, 6), VTOTAL numeric(19, 6) )
-- Declaración del cursor
DECLARE cDataPrecios2 CURSOR FOR
SELECT T2.[U_FECHA_INI], T2.[U_FECHA_FIN], T0.[ItemCode], T3.[ItemName], T0.[OnHand], T1.[Price] FROM OITW T0 INNER JOIN ITM1 T1 ON T0.ItemCode = T1.ItemCode INNER JOIN OPLN T2 ON T2.Factor = T1.Factor INNER JOIN OITM T3 ON T0.ItemCode = T3.ItemCode
WHERE T0.[WhsCode] =[%0] AND T2.[U_FECHA_INI] > =[%1] and T2.[U_FECHA_FIN] < =[%2] and T0.[ItemCode] LIKE 'C%'
OPEN cDataPrecios2
-- Lectura de la primera fila del cursor
FETCH cDataPrecios2 INTO @FECINI, @FECFIN, @ItemCode, @ItemName, @OnHand, @Price
set @VCODIGO = @ItemCode
WHILE (@@FETCH_STATUS = 0 )
BEGIN
If (@VCODIGO = @ItemCode)
SET @VPRECIO = @Price
If (@Price <> @VPRECIO)
BEGIN
SET @VAUM_DISM = @VPRECIO - @Price
SET @VGANA_PERD = @VAUM_DISM * @OnHand
END
BEGIN
INSERT INTO @TABLACAMBIOPREC (FECINI, FECFIN, ItemCode, ItemName, OnHand, VAUM_DISM, VGANA_PERD, VTOTAL )
VALUES ( @FECINI, @FECFIN, @ItemCode, @ItemName, @OnHand, @VAUM_DISM, @VGANA_PERD, @VTOTAL)
FETCH cDataPrecios2 INTO @FECINI, @FECFIN, @ItemCode, @ItemName, @OnHand, @Price
END
set @VCODIGO = @ItemCode
INSERT INTO @TABLACAMBIOPREC (FECINI, FECFIN, ItemCode, ItemName, OnHand, VAUM_DISM, VGANA_PERD, VTOTAL )
VALUES (@FECINI, @FECFIN, @ItemCode, @ItemName, @OnHand, @VAUM_DISM, @VGANA_PERD, @VTOTAL)
END
-- Cierre del cursor
CLOSE cDataPrecios2
-- Liberar los recursos
DEALLOCATE cDataPrecios2
select FECINI, FECFIN, ItemCode AS Codigo_Producto, ItemName AS Nombre_Producto, OnHand as Volumen, VAUM_DISM AS Aum_Dism, VGANA_PERD AS Ganancia_Perdida, VTOTAL AS TOTAL from @TABLACAMBIOPREC
--------------------------------------------------------------------------------
Valora esta pregunta


0