Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Seleccionar primeros registros

Estas en el tema de Seleccionar primeros registros en el foro de SQL Server en Foros del Web. Saludos... Tengo una tabla 'compras': FECHA COD UND ___________________________________ 01/01/2011 C011 4 01/02/2011 C012 5 10/02/2011 C011 2 05/05/2011 C011 6 Utilizo la siguiente consulta: ...
  #1 (permalink)  
Antiguo 06/12/2011, 09:01
 
Fecha de Ingreso: mayo-2011
Mensajes: 6
Antigüedad: 13 años
Puntos: 0
Exclamación Seleccionar primeros registros

Saludos...

Tengo una tabla 'compras':

FECHA COD UND
___________________________________
01/01/2011 C011 4
01/02/2011 C012 5
10/02/2011 C011 2
05/05/2011 C011 6

Utilizo la siguiente consulta:

SELECT cod,und FROM compras WHERE cod = 'C011' ORDER BY fecha DESC;

me devuelve lo siguiente:

FECHA UND
05/05/2011 6
10/02/2011 2
01/01/2011 4

pero si la tabla tuviera 1000 (o más) registros, me devolveria los 1000 (o más)...
lo que necesito es que solo me devuelva los primeros registros cuya suma de unidades sea -por ejm- 8

es decir solo:

FECHA UND
05/05/2011 6
10/02/2011 2

gracias por sus respuestas.....
  #2 (permalink)  
Antiguo 06/12/2011, 13:18
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Seleccionar primeros registros

Utiliza la instruccion TOP (X) donde, x es el numero de registros a visualizar
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 06/12/2011, 13:18
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 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.
  #4 (permalink)  
Antiguo 06/12/2011, 16:42
 
Fecha de Ingreso: marzo-2007
Mensajes: 6
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Seleccionar primeros registros

Solo debes utilizar la fucion TOP y lo haces de esta manera

SELECT TOP 2 FROM tabla WHERE condiciones...xD

Eso es todo espero te sirva... cheque este
Código HTML:
<a href="http://technet.microsoft.com/es-es/library/ms189463.aspx">link</a> 

Última edición por papitrillos; 06/12/2011 a las 16:48
  #5 (permalink)  
Antiguo 06/12/2011, 18:45
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 7 meses
Puntos: 58
Respuesta: Seleccionar primeros registros

Hola que tal, usa el TOP como ya se te a dicho y con eso es mas que suficiente:

SELECT TOP 1 cod,und
FROM compras (NOLOCK)
WHERE cod = 'C011'
ORDER BY fecha DESC;

Si es PostgreSQL es Limit:

SELECT cod,und
FROM compras (NOLOCK)
WHERE cod = 'C011'
ORDER BY fecha DESC
LIMIT 1;

Etiquetas: registros, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:14.