Me parece que lo que Lencho quiere es obtener los primeros n registros a partir de la posición k como permite hacerlo LIMIT n,k.-No conozco la forma pero si tu tabla tiene una clave única numérica (id por ejemplo) podrías hacer uso del WHERE y el ORDER BY.Código: TextSELECT TOP 5 * FROM Tabla WHERE id > ultimoId ORDER BY id ...o algo así.-PD: deberías guardar el último id después de cada consulta.-
Cita de: "Angel_K_ido" Me parece que lo que Lencho quiere es obtener los primeros n registros a partir de la posición k como permite hacerlo LIMIT n,k.-No conozco la forma pero si tu tabla tiene una clave única numérica (id por ejemplo) podrías hacer uso del WHERE y el ORDER BY.Código: TextSELECT TOP 5 * FROM Tabla WHERE id > ultimoId ORDER BY id ...o algo así.-PD: deberías guardar el último id después de cada consulta.- Sip, eso es lo que quiero.Segun el articulo solo PostgreSQL y MySQL ofrecen esa funcion.Buena idea, aunque solo serviria para campos numericos, y no asi por campos de tipo cadena.BYTE
Una de la novedades de SQL Server 2005 son las Funciones de Ranking que se usarán para analizar los datos obtenidos. Entre estas funciones de ranking tenemos, por ejemplo, la función ROW_NUMBER() que nos permite enumerar los resultados de una manera sencilla, es decir, nos devuelve el número secuencial para cada una de la filas de un conjunto de resultados , donde la primera fila es 1.La sintaxis es: ROW_NUMBER ( ) OVER ( [ partition_by_clause ] order_by_clause )donde:partition_by_clause: Divide el conjunto de resultados generado por la cláusula FROM en particiones a las que se aplica la función ROW_NUMBER.order_by_clause: Determina el orden en el que se asigna el valor ROW_NUMBER a las filas de una particiónHe aquí un ejemplo:Esta consulta nos devolverá el ROW_NUMBER para los detalles de orden de venta en base al precio.SELECT ROW_NUMBER() OVER( ORDER BY precio DESC ) AS nro, Cod_OrdenVenta, ID_Articulo , cant AS [Cantidad], precioFROM Detalle_Orden_Ventarow Cod_OrdenVenta ID_Articulo Cantidad precio------ --------------- ------------ -------------- -----------1 00000015 FX8S 1 7621.712 00000016 FX8E 1 3601.773 00000016 FX5P 1 2207.874 00000014 FX5G 1 6507.825 00000018 FX21 1 631.626 00000019 FX19 1 751.62NOTA: La cláusula OVER(ORDER BY DESC/ASC) debe usarse siempre que desee aprovecharse la funcionalidad de ROW_NUMBER, de no ser así, ROW_NUMBER no funcionará. He aquí otro ejemplo, donde usamos la cláusula PARTITION para particionar resultados por el cod_grupoarticulo y luego a cada partición resultante se le aplica el ROW_NUMBER en base al stock_articulo, quedando así:SELECT ROW_NUMBER() OVER(PARTITION BY cod_grupoarticulo ORDER BY stock_articulo ASC) AS NRO, cod_articulo,desc_articulo,cod_grupoarticulo,stock_articuloFROM ARTICULONRO cod_articulo desc_articulo cod_grupoarticulo stock_articulo---- --------------- --------------------------------- ----------------- --------------1 DS02 MAINBOARD 845 PEMYL G003 -12 DS06 MAINBOARD 850 EV2 G003 101 DS07 TECLADO 104 MULTIMEDIA32 G004 201 DS12 SWITCH 5 PORT 10/100, 220V G006 261 DS45 MUEBLE DE OFICINA G007 341 DS76 DISCO DURO G008 201 DS07 IMPRESORA LASER G009 101 DS45 MEMORIA STICK G010 22 DS29 MEMORIA VIDEO G010 51 DS08 TINTA CANON BCI24 NEGRO G011 121 DS41 WEB CAM ALTIOR MODELO B02 G012 01 DS74 MONITOR DE 15 G016 61 DS83 IMPRESORA MATRICIAL DFX5001 G018 122 DS84 IMPRESORA MATRICIAL DFX8502 G018 173 DS21 IMPRESORA MATRICIAL FX21944 G018 48(15 row(s) affected)