Como simular la función ROW_NUMBER() en SQL2000

Funcion ROW_NUMBER()

La funcion ROW_NUMBER() de SQLSERVER 2005 / 2008 devuelve un numero secuencial que representa una fila dentro de una partición, empezando por el numero 1 para el primer registro. Esta funcion es util por ejemplo para obtener resultados paginados donde se necesita hacer un BETWEEN entre los resultados de una paginación.

¿Y en SQL 2000?

Lamentablemente ROW_NUMBER() existe a partir de la version 2005 de SQLServer por lo que no es posible utilizarla en versiones anteriores. Por suerte existe una manera de “simular” esta funcionalidad en una query como se muestra a continuación.

Simularion de ROW_NUMBER()


SELECT        (SELECT COUNT(i.ART_CODIGO)

FROM PedidosWeb.STK_ARTICULOS i

WHERE i.ART_CODIGO >= o.ART_CODIGO ) AS ROWID,

ART_CODIGO + ' ' + ART_NOMBRE AS 'Producto'

FROM          PedidosWeb.STK_ARTICULOS o

ORDER BY      RowID

Analisando el código:
Para simular una función que devuelva un identificador autonumero se hace una subquery que por cada
registro de la tabla por medio de su clave principal se hace un count donde su campo clave es mayor o igual
al campo clave de la tabla principal.
Feliz Programacion .NET!

Leave a comment