Tuesday, September 19, 2017
SQL

Identificando cambios en filas en SQL Server usando ROW_NUMBER

>helibertoarias helibertoarias
junio 08, 2014

En algunas ocasiones cuando trabajamos consultas en SQL Server es probable que tengamos escenarios en el que se desea identificar cuando una secuencia de registros presentan cambios, teniendo por ejemplo un criterio de  orden cronológico, para ello nos apoyaremos en la instrucción row_number .   Supongamos que tenemos una tabla con las columnas ID, Valor y Fecha. Esta tabla contiene un lote de registros, el cual para este ejemplo lo podremos generar con el siguiente script.

Luego de ejecutar el script tendremos un conjunto de  datos más o menos similares a los siguientes.

Datos de ejemplo

Datos de ejemplo

En este ejemplo lo que se desea es ordenar los datos cronológicamente e identificar cuándo el campo valor presenta una diferencia mayor o igual a dos unidades con respecto al registro inmediatamente anterior. Para ello hemos utilizado la instrucción ROW_NUMBER en SQL Server.

Luego de ejecutar el script anterior el resultado será igual al siguiente.

Registros con cambios según condición

Registros con cambios según condición

Como aprecian los registros en la posición (5,6), (7,8) y (9,10) son los que presenta diferencias positivas superiores a dos con respecto a sus valores.

(Visitado 212 veces, 2 visitas hoy)
Heliberto Arias
Mi nombre es Heliberto Arias y vivo en Barranquilla, Colombia. Soy desarrollador de software. He estado en el desarrollo de software desde el 2007. Cree este blog en 2013 para compartir lo que voy aprendiendo cada año, en el escribo de tecnologías Microsoft principalmente en C# (y aunque he usado VB declaro que lo detesto) y SQL Server desarrollado aplicaciones y servicios web entre otros.Me gustaría mucho si te suscribes a mis redes en Youtube, Google+, Twitter, e Instagram.

Comments

No comments found!

Leave a Comment

Your email address will not be published.

diecinueve − Diez =

Login
Remember me
Lost your Password?
Password Reset
Login