Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 超前/滞后中的偏移子查询_Sql_Sql Server_Tsql_Window Functions - Fatal编程技术网

Sql 超前/滞后中的偏移子查询

Sql 超前/滞后中的偏移子查询,sql,sql-server,tsql,window-functions,Sql,Sql Server,Tsql,Window Functions,我有跟踪数据,我使用提前和延迟修改开始和结束日期,以确保前一个结束时间等于下一个开始时间。这些查询在groupId上进行分区,按开始时间排序 我的问题是其中一条记录的开始和结束时间包含以下两条或多条记录。我需要标记这些包含的记录以供审查 如果这只是一条记录,我就不会有问题,因为我可以使用滞后查询查看前一个结束时间,然后标记它。但是,如果后面有两个或多个记录,没有offset参数,我无法执行此操作 我在编写偏移量子查询时遇到问题,因此它无法正确检查包含范围的记录 GroupId Id

我有跟踪数据,我使用提前和延迟修改开始和结束日期,以确保前一个结束时间等于下一个开始时间。这些查询在groupId上进行分区,按开始时间排序

我的问题是其中一条记录的开始和结束时间包含以下两条或多条记录。我需要标记这些包含的记录以供审查

如果这只是一条记录,我就不会有问题,因为我可以使用滞后查询查看前一个结束时间,然后标记它。但是,如果后面有两个或多个记录,没有offset参数,我无法执行此操作

我在编写偏移量子查询时遇到问题,因此它无法正确检查包含范围的记录

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
             );