SQL-запрос для обновления одного столбца на основе нескольких условий

#sql-server #sql-update #conditional-statements

#sql-сервер #sql-обновление #условные операторы

Вопрос:

Например, таблица ‘tbl’ содержит столбцы a, b, dt и flag. Где столбцы a и b вместе образуют уникальную комбинацию.

Необходимо обновить все столбцы флагов как неактивные для всех записей с будущей датой

и отметьте флаг как активный для тех же записей с максимальной (dt)<=текущей датой.

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

1. что вы подразумеваете под «MAX (DT)»? У вас есть несколько столбцов даты в одной строке, и вы хотите проверить, имеет ли какой-либо из них значение меньше текущей даты? Не могли бы вы, пожалуйста, опубликовать некоторые примеры данных, ожидаемые результаты и ваши попытки?

2. Столбец ‘dt’ состоит из даты, на основе которой необходимо обновить флаг, если для одной уникальной комбинации флаг «дата — будущая дата» должен быть неактивным, а для той же комбинации должна быть активна следующая запись с соответствующей датой

3. Что-то вроде update tbl set flag = 0 where dt > GETDATE() ? Если a и b образуют уникальные значения, не должно быть одинаковых записей.

Ответ №1:

Как сказал Николаус:

попробуйте это, и это должно сработать :

 UPDATE tbl SET FLAG = 0 WHERE dt > GETDATE();
UPDATE tbl SET FLAG = 1 WHERE dt <= GETDATE();
  

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

1. Это то же самое, что: UPDATE tbl SET FLAG = случай, когда dt > GETDATE(), затем 0, еще 1 конец

2. Спасибо @andesta.erfan