This query is for SQL 2012 or later.
Data examples
create table Trnevents (
emp_reader_id int
, EVENTID int
, DT datetime
)
insert into Trnevents
select
a, b, cast(c as datetime)
from
(values
(102, 0, '20180104 15:57:04')
,(102, 0, '20180104 15:58:05')
,(102, 1, '20180104 16:46:19')
,(102, 0, '20180104 18:15:27')
,(102, 1, '20180104 18:20:47')
,(102, 0, '20180104 20:02:05')
,(102, 0, '20180104 21:47:29')
,(102, 1, '20180104 22:00:00')
) t (a, b, c)
Query:
select
emp_reader_id, cast(max(DT) as date), max(iif(EVENTID = 0, DT, null)), max(iif(EVENTID = 1, DT, null))
from (
select
*, grp = sum(iif(EVENTID = 0, 1, 0) ) over (partition by emp_reader_id order by DT)
from
Trnevents
) t
group by emp_reader_id, grp