Рассчитать время входа в систему посещаемости - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь отформатировать время входа и выхода в системе посещаемости.Мне удалось отформатировать данные в приведенной ниже форме.

+----------+--------------+-----------+------------------+------+
| Emp_Name | IO_Date_Only | IO_Status |     IO_Time      | Flag |
+----------+--------------+-----------+------------------+------+
| AA       | 08-01-2018   | Enter     | 08-01-2018 11:44 | N    |
| AA       | 08-01-2018   | Exit      | 08-01-2018 11:51 | N    |
| AA       | 08-01-2018   | Exit      | 08-01-2018 11:52 | Y    |
| AA       | 08-02-2018   | Exit      | 08-02-2018 11:44 | N    |
| AA       | 08-02-2018   | Exit      | 08-02-2018 11:51 | Y    |
| AA       | 08-02-2018   | Exit      | 08-02-2018 11:52 | Y    |
| BB       | 08-01-2018   | Exit      | 08-01-2018 11:44 | N    |
| BB       | 08-01-2018   | Exit      | 08-01-2018 11:51 | Y    |
| BB       | 08-01-2018   | Enter     | 08-01-2018 11:52 | N    |
| BB       | 08-02-2018   | Enter     | 08-02-2018 11:44 | N    |
| BB       | 08-02-2018   | Enter     | 08-02-2018 11:51 | Y    |
| BB       | 08-02-2018   | Exit      | 08-02-2018 11:52 | N    |
| BB       | 08-02-2018   | Enter     | 08-02-2018 11:55 | N    |
| BB       | 08-02-2018   | Exit      | 08-02-2018 11:57 | N    |
+----------+--------------+-----------+------------------+------+

Если на приведенных выше данных, если я возьму 1-ю и 2-ю строку, вы увидите, что 1-й - это вход, а 2-й - выход.Однако 3-й ряд также является выходом.В конце концов, пытаясь извлечь эти данные, я хотел бы проигнорировать второй ряд, но взять третий ряд.

По сути, я хочу сделать, если есть два последовательных входа, тогда мне нужно вытащить 1-ю строку, а если есть последовательные выходы, тогда мне нужно вытащить последнюю строку выхода для этой группы. Я отформатировал исходный код.к вышеприведенному выводу, используя Talend, но теперь я застрял.

Вывод должен выглядеть следующим образом

+----------+--------------+-----------+------------------+------+
| Emp_Name | IO_Date_Only | IO_Status |     IO_Time      | Flag |
+----------+--------------+-----------+------------------+------+
| AA       | 08-01-2018   | Enter     | 08-01-2018 11:44 | N    |
| AA       | 08-01-2018   | Exit      | 08-01-2018 11:52 | Y    |
| BB       | 08-01-2018   | Enter     | 08-01-2018 11:52 | N    |
| BB       | 08-02-2018   | Enter     | 08-02-2018 11:44 | N    |
| BB       | 08-02-2018   | Exit      | 08-02-2018 11:52 | N    |
| BB       | 08-02-2018   | Enter     | 08-02-2018 11:55 | N    |
| BB       | 08-02-2018   | Exit      | 08-02-2018 11:57 | N    |
+----------+--------------+-----------+------------------+------+

1 Ответ

0 голосов
/ 20 декабря 2018

попробуй

select emp_name, IO_Status, IO_Date_Only, min(IO_Time) as IN, max(IO_Time) as OUT
from table
group by emp_name, IO_Status, IO_Date_Only;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...