SP обновить один столбец

Вот мой стол [![Сотрудник биометрической системы

  • Элемент списка

    AttendanceLogs

Я использую этот SP, но получил сообщение об ошибке Только одно выражение может быть указано в списке выбора, когда подзапрос не введен с EXISTS. Пожалуйста, кто-нибудь, помогите мне, спасибо.

IF(
     (
        SELECT(
           SELECT * FROM AttendanceLogs 
           WHERE LogDateTime < CURRENT_TIMESTAMP
           and LogDateTime > (
              select CONVERT(datetime,CURRENT_TIMESTAMP)
           )
        )
     %2)
=0)
begin
 Update AttendanceLogs set Direction=1
end
else
begin
Update AttendanceLogs set Direction=0
end 

Я создаю систему посещаемости сотрудников. По сути, у нас есть биометрическое устройство для сканирования отпечатков пальцев, которое отслеживает время и сохраняет его в базе данных, но устройство не может сохранять время, так как проверка может быть осуществлена ​​только как показано в столбце "Направление". Теперь я хочу изменить столбец Направление с 1 на 0. Если сотрудник 1 регистрируется в 7:27 вечера, его следует записать как "1", и когда тот же сотрудник пытается войти снова в 7:28 вечера в тот же день., он должен быть записан как '0'. это будет основанием для обновления записи

2 ответа

Вы идете об этом неправильно.

Вы должны делать что-то вроде этого:

UPDATE AttendanceLogs 
SET Direction = CASE WHEN <condition> THEN 0 ELSE 1 END

когда <condition> должно быть заменено вашим конкретным состоянием.

Прочитайте сообщение об ошибке:

В списке выбора можно указать только одно выражение, если подзапрос не введен с EXISTS

Если вы удалите ненужные вещи из вашего IF Утверждение, что вы закончите с этим:

 IF
    (
        SELECT *
        FROM AttendanceLogs 
        WHERE LogDateTime < CURRENT_TIMESTAMP 
        and LogDateTime >  CONVERT(datetime,CURRENT_TIMESTAMP)
    )%2
=0

Итак, вопрос в том, что вы пытаетесь применить % оператор? * выбирает все столбцы, и движок не знает, к какому столбцу применить %2,

Кроме того, я думаю, вы пытаетесь сделать что-то вроде этого:

UPDATE AttendanceLogs
SET Direction = IIF([MyColumn] % 2 = 0, 1, 0)
WHERE LogDateTime < CURRENT_TIMESTAMP 
    and LogDateTime >  CONVERT(datetime,CURRENT_TIMESTAMP)
Другие вопросы по тегам