The shift is not what is stopping you getting the query correct, it's the underlying data.
For example look at employee 14's first 6 records in chronological order:
user_id verify_date verify_state
14 2019-11-05 07:23:00.000 0
14 2019-11-05 20:00:00.000 1
14 2019-11-06 07:23:00.000 0
14 2019-11-06 19:32:00.000 0
14 2019-11-07 07:25:00.000 0
14 2019-11-07 07:25:00.000 0
Employee 14 did not clock out between 2019-11-06 07:23:00.000 and 2019-11-06 19:32:00.000. I.e the pattern is IN,OUT,IN,IN,IN,IN.
You are going to have to make some decisions about what to do when the clocking out data is not available.
E.g. assume a maximum shift length and derive a sequence of IN,OUT,IN,OUT inserting missing OUT records with assumed values.
To use that method create a sequence (use a CTE or temporary table) of expected shift start and end dates and times covering the entire range of dates and times you are interested in. Manas gives some examples in this Tip -
Generating a Sequence in SQL[
^]
Then use that sequence with a left outer join to the data you do have or insert the missing data into your base table