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
}