Digamos que tengo el siguiente cuadro:seleccionar las filas donde el valor de la columna ha cambiado
Value Time
0 15/06/2012 8:03:43 PM
1 15/06/2012 8:03:43 PM *
1 15/06/2012 8:03:48 PM
1 15/06/2012 8:03:53 PM
1 15/06/2012 8:03:58 PM
2 15/06/2012 8:04:03 PM *
2 15/06/2012 8:04:08 PM
3 15/06/2012 8:04:13 PM *
3 15/06/2012 8:04:18 PM
3 15/06/2012 8:04:23 PM
2 15/06/2012 8:04:28 PM *
2 15/06/2012 8:04:33 PM
¿Cómo selecciono las filas con estrellas, es decir, donde Value
ha cambiado? Básicamente, estoy tratando de encontrar el momento en que Value
ha cambiado para poder hacer otras consultas basadas en esos intervalos de tiempo. La solución no debe depender de saber Value
o Time
de antemano.
Me parece que esto no debería ser muy difícil (¡pero al parecer es lo suficientemente difícil para mí!).
Actualmente estoy usando SQL Server 2008 aunque tengo acceso a 2012 si las nuevas funciones de ventana/analíticas son útiles.
Intenté adaptar las soluciones aquí http://blog.sqlauthority.com/2011/11/24/sql-server-solution-to-puzzle-simulate-lead-and-lag-without-using-sql-server-2012-analytic-function/ pero mi consulta no se completó después de una hora. Creo que las uniones explotan el tamaño de la fila a algo inmanejable (o lo arruiné).
Puedo resolver este problema con el código C# y múltiples llamadas a bases de datos, pero parece que se podría hacer algo en una función con valores de tabla o SP que sería mucho mejor.
Además, una solución que solo funciona con aumentar Value
está bien si es más fácil.
Wow that fue rápido. El aumento de valor está bien. Lo intentaré. – agentnega
Fantástico, gracias @ Aaron Bertrand. En mis datos, la segunda versión tomó menos del doble de tiempo que la primera versión, por lo que la diferencia de rendimiento no es tan mala. – agentnega
¿Cómo convertir esta consulta para incluir también una ID (nueva columna) en el resultado resultante? – ThinkCode