【发布时间】:2012-06-23 01:20:59
【问题描述】:
假设我有下表:
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 的解决方案也可以。
【问题讨论】:
标签: sql sql-server-2008 tsql select