Bases de Datos > SQL Server
Equivalente A Limit
A_LEX:
Algo que puede ser útil al respecto, para lograr el efecto que se plantea.
Funcionalidad ROW_NUMBER ( ) -> Una Función de Ranking en SQL Server 2005
Cito el artículo completo ya que el foro no me permite publicar enlaces. :angry:
Saludos.
--- Citar ---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ón
He 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], precio
FROM Detalle_Orden_Venta
row Cod_OrdenVenta ID_Articulo Cantidad precio
------ --------------- ------------ -------------- -----------
1 00000015 FX8S 1 7621.71
2 00000016 FX8E 1 3601.77
3 00000016 FX5P 1 2207.87
4 00000014 FX5G 1 6507.82
5 00000018 FX21 1 631.62
6 00000019 FX19 1 751.62
NOTA: 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_articulo
FROM ARTICULO
NRO cod_articulo desc_articulo cod_grupoarticulo stock_articulo
---- --------------- --------------------------------- ----------------- --------------
1 DS02 MAINBOARD 845 PEMYL G003 -1
2 DS06 MAINBOARD 850 EV2 G003 10
1 DS07 TECLADO 104 MULTIMEDIA32 G004 20
1 DS12 SWITCH 5 PORT 10/100, 220V G006 26
1 DS45 MUEBLE DE OFICINA G007 34
1 DS76 DISCO DURO G008 20
1 DS07 IMPRESORA LASER G009 10
1 DS45 MEMORIA STICK G010 2
2 DS29 MEMORIA VIDEO G010 5
1 DS08 TINTA CANON BCI24 NEGRO G011 12
1 DS41 WEB CAM ALTIOR MODELO B02 G012 0
1 DS74 MONITOR DE 15 G016 6
1 DS83 IMPRESORA MATRICIAL DFX5001 G018 12
2 DS84 IMPRESORA MATRICIAL DFX8502 G018 17
3 DS21 IMPRESORA MATRICIAL FX21944 G018 48
(15 row(s) affected)
--- Fin de la cita ---
Mollense:
Muy interesante :yes:
Abría que ver que posibilidades nos trae esto :comp:
ElNapster:
Muy cierto ...... :rolleyes:
lencho:
no le entiendo muy bien a lo que dice A_LEX
BYTE.
JuanK:
o sea que en sql server 2005 si se puede hacer la solución que planteaba la otra vez.
http://foros.solocodigo.com/index.php?show...c=26835&st=15
:smartass:
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa