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
|
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)
.... a ojo de buen cubero, no hace falta.... |