【发布时间】:2012-10-18 17:39:47
【问题描述】:
我正在尝试找出一种有效的方法来比较 SQL Server 2008 中的两行。我需要编写一个查询来查找 Movement 表中连续 N 次具有 Speed < 10 的所有行。
表的结构是:
事件时间 速度
如果数据是:
2012-02-05 13:56:36.980, 2
2012-02-05 13:57:36.980, 11
2012-02-05 13:57:46.980, 2
2012-02-05 13:59:36.980, 2
2012-02-05 14:06:36.980, 22
2012-02-05 15:56:36.980, 2
然后,如果我查找 2 个连续行,它将返回第 3/4 行 (13:57:46.980 / 13:59:36.980),如果我查找三个连续行,它将不返回任何内容。数据的顺序只有 EventTime/DateTime。
你能给我的任何帮助都会很棒。我正在考虑使用游标,但它们通常效率很低。另外,这个表大约有 10m 行大小,所以越高效越好! :)
谢谢!
【问题讨论】:
-
这些数据是否由其他字段组合在一起?比如
thingy_id,或者这两列真的只有两列吗? -
@Dems - 还有其他列有助于将结果集限制为 10k/100k 行 - 但我正在寻找的解决方案不能比列出的基本示例更进一步更多。没有什么可以再提供帮助了,它会根据 EventTime 和 Speed 字段从字面上找到下一行/上一行。
标签: sql sql-server sql-server-2008 select