SP обновить один столбец
Вот мой стол [![Сотрудник биометрической системы
Я использую этот 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)