Ver Mensaje Individual
  #3 (permalink)  
Antiguo 01/07/2010, 07:46
Avatar de -rommel_
-rommel_
 
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: buscar la compra anterior en la misma tabla

normalmente se hace asi...
Código SQL:
Ver original
  1. DECLARE @fechainicial datetime, @fechafinal datetime
  2. SET @fechainicial = '30-06-2010'; SET @fechafinal = '30-06-2010';
  3.  
  4. SELECT  T1.FECHA_LLEGADA
  5.     ,   T1.CODIGO
  6.     ,   T1.CANTIDAD
  7.     ,   T1.COSTO_UNIT
  8.     ,   (   SELECT top 1    T2.FECHA_LLEGADA
  9.             FROM master.dbo.REG_COMPRAS T2
  10.             WHERE   T2.FECHA_LLEGADA < T1.FECHA_LLEGADA
  11.                 AND T2.CODIGO = T1.CODIGO
  12.             ORDER BY    T2.FECHA_LLEGADA DESC
  13.         )   FECHA_ULTIMA_COMPRA
  14.     ,   (   SELECT top 1    T2.CANTIDAD
  15.             FROM master.dbo.REG_COMPRAS T2
  16.             WHERE   T2.FECHA_LLEGADA < T1.FECHA_LLEGADA
  17.                 AND T2.CODIGO = T1.CODIGO
  18.             ORDER BY    T2.FECHA_LLEGADA DESC
  19.         )   CANT_ANTERIOR
  20.     ,   (   SELECT top 1    T2.COSTO_UNIT
  21.             FROM master.dbo.REG_COMPRAS T2
  22.             WHERE   T2.FECHA_LLEGADA < T1.FECHA_LLEGADA
  23.                 AND T2.CODIGO = T1.CODIGO
  24.             ORDER BY    T2.FECHA_LLEGADA DESC
  25.         )   ULT_COSTO
  26. FROM master.dbo.REG_COMPRAS T1
  27. WHERE   T1.FECHA_LLEGADA BETWEEN @fechainicial AND @fechafinal

y en oracle... lo podria hacer asi...
Código SQL:
Ver original
  1. WITH    Compras
  2. AS  (   SELECT  FECHA_LLEGADA
  3.             ,   CODIGO
  4.             ,   CANTIDAD
  5.             ,   COSTO_UNIT
  6.         FROM master.dbo.REG_COMPRAS
  7.         WHERE   T1.FECHA_LLEGADA BETWEEN @fechainicial AND @fechafinal
  8.     )
  9. SELECT  T1.FECHA_LLEGADA
  10.     ,   T1.CODIGO
  11.     ,   T1.CANTIDAD
  12.     ,   T1.COSTO_UNIT
  13.     ,   T2.FECHA_LLEGADA 'FECHA_ULTIMA_COMPRA'
  14.     ,   T2.CANTIDAD 'CANT_ANTERIOR'
  15.     ,   T2.COSTO_UNIT 'ULT_COSTO'
  16. FROM master.dbo.REG_COMPRAS T2, Compras T1
  17. WHERE   T2.FECHA_LLEGADA < T1.FECHA_LLEGADA
  18.     AND T2.CODIGO = T1.CODIGO
  19. ORDER BY    T2.FECHA_LLEGADA DESC
no lo eh probado... es cuestion de probar... Saludos

Última edición por -rommel_; 01/07/2010 a las 07:58