Выберите строки, в которых значение столбца изменилось
Допустим, у меня есть следующая таблица:
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
Как выбрать помеченные строки, то есть гдеValue
изменилось? По сути, я пытаюсь найти время, когдаValue
изменился, поэтому я могу делать другие запросы на основе этих временных интервалов. Решение не должно зависеть от знанияValue
или жеTime
заблаговременно.
Мне кажется, что это не должно быть очень трудно (но, по-видимому, это достаточно сложно для меня!).
В настоящее время я использую SQL Server 2008, хотя у меня есть доступ к 2012 году, если новые окна / аналитические функции полезны.
Я попытался адаптировать решения здесьhttp://blog.sqlauthority.com/2011/11/24/sql-server-solution-to-puzzle-simulate-lead-and-lag-without-using-sql-server-2012-analytic-function/ но мой запрос не был выполнен через час! Я думаю, что соединения взрывают размер строки до чего-то неуправляемого (или я облажался).
Я могу решить эту проблему с помощью кода C # и нескольких вызовов БД, но кажется, что это можно сделать в табличной функции или SP, что было бы намного приятнее.
Кроме того, решение, которое работает только с увеличениемValue
В порядке, если это проще.