有SQL Server 11。大概有下表Statuses
------------------------------------
| Id | DateTimeUtc | Status |
------------------------------------
| 1 | 2020-02-08 15:23:00 | Moving |
| 2 | 2020-02-08 15:26:00 | Moving |
| 3 | 2020-02-08 15:29:00 | Moving |
| 4 | 2020-02-08 15:39:00 | Moving |
| 5 | 2020-02-08 15:43:00 | Moving |
| ... |
------------------------------------
如何选择Id与之前状态相差超过 3 分钟的记录?我期待这样的事情:
SELECT Id
FROM Statuses
WHERE DATEDIFF(MINUTE, [current].DateTimeUtc, [prev].DateTimeUtc) > 3
ORDER BY DateTimeUtc
有很多数据,所以最好使用省时的查询。根据我的发现,有 functions LAG / LEAD,但它们不在版本 11 中。
不使用窗口函数: