SQL查找先进先出时间(具有重叠和多行)

SQL查找先进先出时间(具有重叠和多行),sql,sql-server,sql-server-2008,time,Sql,Sql Server,Sql Server 2008,Time,我有一个包含输入和输出时间的表,现在我想检索第一个输入和最后一个输出时间 但我不知道如何跨多行获取最后一次外出时间 来源 预期结果 您应该像这样运行表: 1设置参数@outTime=rhis行的超时。 2检查下一行:如果开始时间在之前,则检查其进入时间:如果是之后-将@out time设置为它,然后继续此检查。 我写下查询\函数的想法: @outTime = FirstRow.timeout @inTime = FirstRow.timein @id = "" for(row in table)

我有一个包含输入和输出时间的表,现在我想检索第一个输入和最后一个输出时间

但我不知道如何跨多行获取最后一次外出时间

来源 预期结果
您应该像这样运行表: 1设置参数@outTime=rhis行的超时。 2检查下一行:如果开始时间在之前,则检查其进入时间:如果是之后-将@out time设置为它,然后继续此检查。 我写下查询\函数的想法:

@outTime = FirstRow.timeout
@inTime = FirstRow.timein
@id = ""
for(row in table)
{
    if(row.timein < @outTime)
    {
        if(row.timeout > @outTime)
        {
            @outTime = row.timeout
        }
        @id.concatenate("," + row.id)
        check next row
        after this loop:
        *print row(@id, @timein, @timeout)
    }
    check next row
}

无法打开图片链接。更新:my Bad您在此处缺少有关您的要求的详细信息。你是怎么决定A应该单独排成一行的,B,C&D在一起,E应该单独排在第三组的?Ben,因为时间是重叠的,B in->C in->B Out但C Not Out->D in->D Out C Not Out->C Out如果E in时间更改为2019-05-14 16:45,那么预期结果将是B,C,D,E在一起,首先是09:01,最后一班是22:12
    ID         First In                   Last Out
    ===   =======================   =======================
     A    2019-05-12 23:06:00.000   2019-05-13 03:00:00.000
   B,C,D  2019-05-14 09:01:00.000   2019-05-14 17:33:00.000
     E    2019-05-14 21:45:00.000   2019-05-14 22:12:00.000
@outTime = FirstRow.timeout
@inTime = FirstRow.timein
@id = ""
for(row in table)
{
    if(row.timein < @outTime)
    {
        if(row.timeout > @outTime)
        {
            @outTime = row.timeout
        }
        @id.concatenate("," + row.id)
        check next row
        after this loop:
        *print row(@id, @timein, @timeout)
    }
    check next row
}