mysql получает флаг вчера(другой столбец, не тип даты и времени)

#php #mysql #sql #date #datetime

Вопрос:

У меня есть запрос на получение даты и времени выхода-1 день, но не для столбца флага в строке этого дня, а для текущей строки. это мой вопрос

 SELECT clockin, clockout, flag FROM `attendance` 
WHERE (`flag` IN ('A', 'AC')) 
AND (`clockin` BETWEEN '2021-03-26' AND '2021-04-26') 

AND (IF( DATE_FORMAT(clockout - INTERVAL 1 DAY, '%H:%i:%s') < '23:00:00' 

-- my problem in this condition 
AND (flag = 'A' || flag ='AC'), 

((CAST(clockin AS time) > '08:15:01')), ((CAST(clockin AS time) > '12:15:01'))))
                AND (CAST(clockin AS time) < '14:00:00') 
                    
            ORDER BY `user_id`
 

Мне не хватает одного, в котором в условии я использую флаг в этой строке, а не флаг из строки (дата-1 день). как я могу получить флаг из строки (дата-1 день), которая не является текущей строкой?

Комментарии:

1. Используется lag() для доступа к предыдущему столбцу строки`

2. DATE_FORMAT(clockout - INTERVAL 1 DAY, '%H:%i:%s') < '23:00:00' в этом нет никакого смысла. Вычтенные дни не могут изменить время .

3. если я использую lag() этот доступ к предыдущей строке, но в таблице этого быть не может, потому что предыдущая строка может быть строкой из другого идентификатора пользователя. @Serg

4. @RahmatHidayat, вы управляете разделением и упорядочением с помощью предложения over() функции окна dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html

5. @serg спасибо, что это решено с помощью заказа по идентификатору пользователя и часам