Sql 超前/滞后中的偏移子查询
我有跟踪数据,我使用提前和延迟修改开始和结束日期,以确保前一个结束时间等于下一个开始时间。这些查询在groupId上进行分区,按开始时间排序 我的问题是其中一条记录的开始和结束时间包含以下两条或多条记录。我需要标记这些包含的记录以供审查 如果这只是一条记录,我就不会有问题,因为我可以使用滞后查询查看前一个结束时间,然后标记它。但是,如果后面有两个或多个记录,没有offset参数,我无法执行此操作 我在编写偏移量子查询时遇到问题,因此它无法正确检查包含范围的记录Sql 超前/滞后中的偏移子查询,sql,sql-server,tsql,window-functions,Sql,Sql Server,Tsql,Window Functions,我有跟踪数据,我使用提前和延迟修改开始和结束日期,以确保前一个结束时间等于下一个开始时间。这些查询在groupId上进行分区,按开始时间排序 我的问题是其中一条记录的开始和结束时间包含以下两条或多条记录。我需要标记这些包含的记录以供审查 如果这只是一条记录,我就不会有问题,因为我可以使用滞后查询查看前一个结束时间,然后标记它。但是,如果后面有两个或多个记录,没有offset参数,我无法执行此操作 我在编写偏移量子查询时遇到问题,因此它无法正确检查包含范围的记录 GroupId Id
GroupId Id Start End
1613833 81477 19/04/2014 10:47 19/04/2014 14:38
1613833 38813 19/04/2014 14:38 19/04/2014 17:45
1613833 15874 19/04/2014 14:46 19/04/2014 15:00
1613833 89773 19/04/2014 15:00 19/04/2014 16:30
在这种情况下,记录15874将使用
LAG(END) OVER (PARTITION BY GroupId ORDER BY Start) > END
,但89773不会
我不知道如何编写偏移量子查询来处理这样的情况
有人能帮忙吗?你不想落后/领先。仅使用存在:
这只适用于一个小的子集,但由于我的完整数据集在tablegroupid、start、end上添加了索引,所以速度太慢。
select t.*
from table t
where exists (select 1
from table t2
where t2.groupid = t.groupid and
t2.start < t.start and
t2.end > t.end
);