28 enero 2011

Autoincrementables en consultas SQL Server 2005-2008

Para no entrar en introducciones innecesarias, la función de SQL que nos permitirá agregar un autoincrementable es ROW_NUMBER(), de las muchas cosas que han hecho bien los muchachos de SQL Server, es la ayuda que tienen, así que si quieres la explicacion técnica, es mejor que vayas con ellos.

Bueno, si sigues aquí es probable que quieras una explicacion mas sencilla, entonces:

Suponiendo que tenemos la tabla clientes con los nombres de nuestros clientes (supongamos que solo tenemos una columna para simplificar al máximo):

clientes
--------
sutano
mengano
perengano
..etc, etc

y un dia llega alguien y te dice: "me das un reporte de nuestros clientes, ah y por favor le pones un consecutivo". Entonces tu recuerdas que existe la función ROW_NUMBER() y rápidamente escribes:

SELECT ROW_NUMBER() OVER (ORDER BY nombre ), * FROM dbo.clientes
Tras lo cual SQL Server te retorna:

clientes

--------
1 sutano
2 mengano
3 perengano
..etc, etc


Si te fijas lo unico que necesita la funcion es en base a que columna vas a generar el numero de registro, en nuestro ejemplo lo hacemos bajo la unica que tenemos.

Otra cosa que te puede ayudar es que le puedes sumar cosas al resutlado de la funcion, por ejemplo:

SELECT  ROW_NUMBER() OVER (ORDER BY nombre ), * FROM dbo.clientes

SELECT (SELECT COUNT(*) FROM dbo.otratabla ) + ROW_NUMBER() OVER (ORDER BY nombre ), * FROM bo.clientes

 Espero te sirva el ejemplo