row_number el rownum de oracle para PostgreSQL 8.4 o superior

por | abril 30, 2012

Una de las funciones más utilizadas en la Base de datos Oracle es ROWNUM que nos permite numerar nuestras consultas y usarla como un campo más aunque no esté en la tabla a la que le hicimos el query.

En PostgreSQL existe una función para agregar la misma funcionalidad llamada row_num, a partir de la versión 8.4 o superior esta está implementada en este extraordinario motor de base de datos. Para versiones anteriores hay diferentes métodos para conseguir lo mismo y que se puede encontrar en la web.

Para el ejemplo referenciar así:

  • campo: El campo que va a usar la función para contar los registros
  • mi_tabla: Tabla de la cual se quiere agregar la numeración

La forma de usar la función es la siguiente:

SELECT ROW_NUMBER() OVER (ORDER BY campo) AS item, mt.*
FROM mitabla mt;

Es faltible usar el campo para hacer una ordenación previmente y luego numerar, de la siguiente forma:

SELECT ROW_NUMBER() OVER (ORDER BY campo DESC) AS item, mt.*
FROM mitabla mt;

Tambien se puede especificar ciertos campos y no todos los campos como en las anteriores consultas, así:

SELECT ROW_NUMBER() OVER (ORDER BY campo) AS item,
mt.campo1, mt.campo2, mt.campo3 FROM mitabla mt;

Por el momento es todo, espero les sea de utilidad.