normalmente se hace asi...
Código SQL:
Ver originalDECLARE @fechainicial datetime, @fechafinal datetime
SET @fechainicial = '30-06-2010'; SET @fechafinal = '30-06-2010';
SELECT T1.FECHA_LLEGADA
, T1.CODIGO
, T1.CANTIDAD
, T1.COSTO_UNIT
, ( SELECT top 1 T2.FECHA_LLEGADA
FROM master.dbo.REG_COMPRAS T2
WHERE T2.FECHA_LLEGADA < T1.FECHA_LLEGADA
AND T2.CODIGO = T1.CODIGO
ORDER BY T2.FECHA_LLEGADA DESC
) FECHA_ULTIMA_COMPRA
, ( SELECT top 1 T2.CANTIDAD
FROM master.dbo.REG_COMPRAS T2
WHERE T2.FECHA_LLEGADA < T1.FECHA_LLEGADA
AND T2.CODIGO = T1.CODIGO
ORDER BY T2.FECHA_LLEGADA DESC
) CANT_ANTERIOR
, ( SELECT top 1 T2.COSTO_UNIT
FROM master.dbo.REG_COMPRAS T2
WHERE T2.FECHA_LLEGADA < T1.FECHA_LLEGADA
AND T2.CODIGO = T1.CODIGO
ORDER BY T2.FECHA_LLEGADA DESC
) ULT_COSTO
FROM master.dbo.REG_COMPRAS T1
WHERE T1.FECHA_LLEGADA BETWEEN @fechainicial AND @fechafinal
y en oracle... lo podria hacer asi...
Código SQL:
Ver originalWITH Compras
AS ( SELECT FECHA_LLEGADA
, CODIGO
, CANTIDAD
, COSTO_UNIT
FROM master.dbo.REG_COMPRAS
WHERE T1.FECHA_LLEGADA BETWEEN @fechainicial AND @fechafinal
)
SELECT T1.FECHA_LLEGADA
, T1.CODIGO
, T1.CANTIDAD
, T1.COSTO_UNIT
, T2.FECHA_LLEGADA 'FECHA_ULTIMA_COMPRA'
, T2.CANTIDAD 'CANT_ANTERIOR'
, T2.COSTO_UNIT 'ULT_COSTO'
FROM master.dbo.REG_COMPRAS T2, Compras T1
WHERE T2.FECHA_LLEGADA < T1.FECHA_LLEGADA
AND T2.CODIGO = T1.CODIGO
ORDER BY T2.FECHA_LLEGADA DESC
no lo eh probado... es cuestion de probar... Saludos