Respuesta: Cursor devuelve valores erróneos al ordenar datos por fecha Libra Gracias por interesarte en mi mensaje,
Este es el código del cursor que estoy utilizando:
DECLARE CCalcula CURSOR
FOR
SELECT Site, Parte, Existencias, Cantidad, CostoUSD, CostoMN, Fecha, Referencia
FROM @mcCTAntiguedadInventarioAux
ORDER BY Site,Parte,Fecha desc
OPEN CCalcula
FETCH NEXT FROM CCalcula INTO @nSite, @parte, @existencia, @cantidad, @costoUSD, @costoMN, @fecha, @referencia
WHILE @@fetch_status = 0
BEGIN
----------------------------------------------------------------------------------------------------------------
IF @parteAnterior <> @parte
BEGIN
IF @contador < @existenciaAnterior
BEGIN
SET @aux = (@existenciaAnterior - @contador)
SET @auxUSD = (
SELECT TOP (1)
CostoUSD
FROM @mcCTAntiguedadInventarioAux
WHERE Site = @nSite AND
Parte = @parteAnterior
)
SET @auxMN = (
SELECT TOP (1)
CostoMN
FROM @mcCTAntiguedadInventarioAux
WHERE Site = @nSite AND
Parte = @parteAnterior
)
BEGIN TRY
INSERT INTO @mcCTAntiguedadInventario (Site, Parte, Cantidad, costoUSD,
CostoMN, Fecha, Referencia,
TipoRespaldo, FechaRespaldo)
VALUES (@nSite, @parteAnterior, @aux, @auxUSD, @auxMN,
DATEADD(yy, -2, @fanalisis), 'INV INICIAL', @tipoanalisis,
@fanalisis)
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE()
END CATCH
END
--REINICIA LAS VARIABLES DEL ANALISIS
SET @parteAnterior = @parte
SET @contador = 0
SET @existenciaAnterior = @existencia
SET @aux = 0
SET @auxMN = 0
SET @auxUSD = 0
END
IF (@existencia - @contador) = 0
BEGIN
FETCH NEXT FROM CCalcula INTO @nSite, @parte, @existencia, @cantidad, @costoUSD, @costoMN,
@fecha, @referencia
CONTINUE
END
IF @cantidad > (@existencia - @contador)
BEGIN
SET @cantidad = (@existencia - @contador)
END
SET @cantidad = ISNULL(@cantidad, 0)
IF @cantidad = 0
BEGIN
SET @cantidad = (@existencia - @contador)
SET @costoUSD = (
SELECT TOP (1)
CostoUSD
FROM @mcCTAntiguedadInventarioAux
WHERE Site = @nSite AND
Parte = @parte
)
SET @costoMN = (
SELECT TOP (1)
CostoMN
FROM @mcCTAntiguedadInventarioAux
WHERE Site = @nSite AND
Parte = @parte
)
SET @fecha = DATEADD(yy, -2, @fanalisis)
SET @referencia = 'INV INCIAL'
END
BEGIN TRY
INSERT INTO @mcCTAntiguedadInventario (Site, Parte, Cantidad, costoUSD, CostoMN, Fecha,
Referencia, TipoRespaldo, FechaRespaldo)
VALUES (@nSite, @parte, @cantidad, @costoUSD, @costoMN, @fecha, @referencia, @tipoanalisis,
@fanalisis)
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE()
END CATCH
SET @contador = @contador + @cantidad
---------------------------------------------------------------------------------------------------------------
FETCH NEXT FROM CCalcula INTO @nSite, @parte, @existencia, @cantidad, @costoUSD, @costoMN, @fecha,
@referencia
END
CLOSE CCalcula
DEALLOCATE CCalcula
INSERT INTO [dbo].[mcCTAntiguedadInventario]
SELECT *
FROM @mcCTAntiguedadInventario
Última edición por Master_gdl; 19/01/2015 a las 10:17
Razón: por error precione guardar antes de terminar
|