SQL находит время первого и последнего выхода (с перекрытием и несколькими строками) - PullRequest
0 голосов
/ 16 мая 2019

У меня есть таблица, которая содержит время входа и выхода, теперь я хочу получить время первого и последнего выхода.

но я понятия не имею, как получить время ожидания в нескольких строках

Таблица

Источник

ID            IN Time                 Out Time
===  =======================    =======================
 A   2019-05-12 23:06:00.000    2019-05-13 03:00:00.000
 B   2019-05-14 09:01:00.000    2019-05-14 11:05:00.000
 C   2019-05-14 09:13:00.000    2019-05-14 17:33:00.000
 D   2019-05-14 16:15:00.000    2019-05-14 16:30:00.000
 E   2019-05-14 21:45:00.000    2019-05-14 22:12:00.000

Ожидаемый результат

    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

Ожидаемый результат

1 Ответ

0 голосов
/ 16 мая 2019

Вы должны запустить таблицу следующим образом: 1) установить параметр @outTime = время выхода из этой строки. 2) проверьте следующую строку: если время начала раньше, тогда проверьте его время: если оно позже - установите для него время @out и продолжите эту проверку. Я пишу идею запроса \ функции:

@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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...