假设我有下表:
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# 代码和多个 db 调用来解决这个问题,但它似乎可以在表值函数或 SP 中完成,这样会更好。
Value
此外,如果更容易,仅适用于增加的解决方案是可以的。