SQL Server Row_number

En algunas ocasiones, por esas ciertas condiciones extrañas que pasan en nuestros trabajos como administradores de datos, debemos enumerar ciertos datos que tengamos almacenados en nuestras bases de datos.

Para ello podemos valernos de la función ROW_NUMBER() que nos permitirá  sin mucho esfuerzo enumerar las filas que tengamos almacenadas.

Para este ejemplo hemos creado una base de datos llamada Pruebas y en ella hemos creado una tabla pedidos;

row_number-01.jpg

Al hacer una consulta estándar a esta tabla, obtendremos todos los datos almacenados en ella sin obtener todavía una numeración:

row_number-02.jpg

Lo que deseamos hacer es que se enumeren las veces que se lista el código de un cliente, que en este caso están en la columna idcliente, pero que al momento de listar otro cliente la numeración comience desde el número uno (1) nuevamente con ese nuevo cliente y así sucesivamente.

Ahora para poder enumerar las filas, usaremos la función ROW_NUMBER() de la siguiente manera dentro de nuestra sentencia:

SELECT idcliente, ROW_NUMBER() over (partition by idcliente order by idcliente) FROM pedidos;

Ya que hemos visto como es la estructura de la sentencia vamos a explicarla para que se comprenda mejor la misma.

Al establecerse la función ROW_NUMBER() ésta debe ir acompañada seguidamente de una instrucción OVER en la cual estableceremos sobre que campo queremos que se haga la partición del conteo que en este ejemplo es en la columna idcliente y debe ir acompañado por ORDER BY que es la misma columna en que se realiza la enumeración.

Al ejecutar nuestra sentencia obtendremos el siguiente resultado:

row_number-03.jpg

Como podemos observar en la imagen anterior ahora todos los códigos de los clientes se encuentran numerados y al comenzar un nuevo código vuelve a comenzar la secuencia de enumeración.

Saludos!

Roberto Pozo

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: