Простой подход к этому - использовать предложение GROUP BY
в столбце emp_id
, а затем поиграть с методами агрегирования MAX()
и MIN()
, чтобы получить желаемый результат.Обратите внимание, что для сопоставления со значениями NULL
вам потребуется выполнить дополнительную проверку, например:
SELECT
emp_id,
MIN(tap_in) AS tap_in,
IF(MIN(tap_in) = MAX(tap_in), NULL, MAX(tap_in)) AS tap_out
FROM
log_attendance
GROUP BY
emp_id
Вы также можете проверить это здесь: DB-Fiddle