Ver Mensaje Individual
  #3 (permalink)  
Antiguo 06/12/2011, 13:18
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 5 meses
Puntos: 447
Respuesta: Seleccionar primeros registros

Hola niko7700:

Hay varias formas en que puedes plantear la solución, la solución está en calcular el acumulado de los registros, ya que este es el criterio que quieres utilizar para filtrar los datos:

checa este script:

Código SQL:
Ver original
  1. DECLARE @Compras TABLE (FECHA datetime, COD VARCHAR(4), UND INT)
  2. INSERT INTO @Compras VALUES ('2011-01-01', 'C011', 4)
  3. INSERT INTO @Compras VALUES ('2011-02-01', 'C012', 5)
  4. INSERT INTO @Compras VALUES ('2011-02-10', 'C011', 2)
  5. INSERT INTO @Compras VALUES ('2011-05-05', 'C011', 6)
  6. SELECT * FROM @Compras
  7.  
  8. FECHA                   COD  UND
  9. ----------------------- ---- -----------
  10. 2011-01-01 00:00:00.000 C011 4
  11. 2011-02-01 00:00:00.000 C012 5
  12. 2011-02-10 00:00:00.000 C011 2
  13. 2011-05-05 00:00:00.000 C011 6
  14.  
  15. SELECT
  16. C1.fecha, C1.cod, C1.und,
  17. (SELECT SUM(und) FROM @Compras C2
  18. WHERE C2.cod = C1.cod AND C2.fecha >= C1.fecha
  19. GROUP BY cod
  20. ) acumulado
  21. FROM @Compras C1
  22. WHERE C1.cod = 'C011'
  23. ORDER BY fecha DESC
  24.  
  25. fecha                   cod  und         acumulado
  26. ----------------------- ---- ----------- -----------
  27. 2011-05-05 00:00:00.000 C011 6           6
  28. 2011-02-10 00:00:00.000 C011 2           8
  29. 2011-01-01 00:00:00.000 C011 4           12

la segunda consulta es sólo para ejemplificar cómo se está obteniendo el acumulado... lo único que faltaría hacer es filtrar esta información para obtener aquellos registros donde el acumulado sea menor o igual a 8... puedes utilizar la subconsulta en el WHERE en lugar del SELECT para hacer el filtrado.

Como te comento, esta es solo una manera para hacerlo, aunque hay muchas otras, pregunta a SAN GOOGLE cómo puedes obtener el acumulado de una consulta, tal vez encuentres alguna opción más sencilla.

Saludos
Leo.