SQL Server 2008 中 LEAD 和 LAG 函数的替代方法
问题:
SQL Server 2008不支持LEAD和LAG功能。您需要确定如何将当前行与下一行中的值进行比较。
解决方案:
另一种方法是执行自连接:
SELECT t.* FROM table t JOIN table tnext ON t.id = tnext.id - 1 AND t.StatusId = 1 AND tnext.StatusId = 6 AND DATEDIFF(SECOND, t.MinStartTime, tnext.MinStartTime) < 60;
此查询将返回当前行状态为 1、下一行状态为 6 以及之间的时间差的行两行小于 60 秒。
如果需要精确的分钟匹配,可以修改查询:
SELECT t.* FROM table t JOIN table tnext ON t.id = tnext.id - 1 AND t.StatusId = 1 AND tnext.StatusId = 6 AND DATEDIFF(SECOND, t.MinStartTime, tnext.MinStartTime) < 60 AND DATEPART(MINUTE, t.MinStartTime) = DATEPART(MINUTE, tnext.MinStartTime);
以上是如何在没有 LEAD 和 LAG 的情况下比较 SQL Server 2008 中的相邻行?的详细内容。更多信息请关注PHP中文网其他相关文章!