Как выполнить обновление в зависимости от условия на соответствующем столбце в MSSQL Server - PullRequest
0 голосов
/ 27 апреля 2018

У меня всего 8 столбцов в таблице, где 4 столбца имеют дату, а оставшиеся 4 имеют флаг, соответствующий дате. Итак, структура таблицы выглядит следующим образом.

Column1 Column2 Column3 Column4 FlagOfColumn1 FlagOfColumn2 FlagOfColumn3 FlagOfColumn4

У меня есть данные (дата) в первом 4-м столбце, и в остальных 4-х столбцах по умолчанию установлено значение Null. сейчас состояние такое. если дата (в таблице в любом столбце) меньше 8 недель (по сравнению с сегодняшней датой). чем я должен установить 0 для уважаемого столбца. Предположим, что Date of Column1 меньше 8 недель, чем я должен установить 0 для FlagOfColumn1, как это. Я написал простой запрос на обновление, который устанавливает 0 для всех 4 флаговых столбцов, которые я не хочу.

1 Ответ

0 голосов
/ 27 апреля 2018

Использование CASE:

UPDATE yourTable
SET 
     FlagOfColumn1 = CASE WHEN Column1 < DATEADD(wk, -8, GETDATE()) 
        THEN 0 ELSE FlagOfColumn1 END
    ,FlagOfColumn2 = CASE WHEN Column2 < DATEADD(wk, -8, GETDATE()) 
        THEN 0 ELSE FlagOfColumn2 END
    ,FlagOfColumn3 = CASE WHEN Column3 < DATEADD(wk, -8, GETDATE()) 
        THEN 0 ELSE FlagOfColumn3 END
    ,FlagOfColumn4 = CASE WHEN Column4 < DATEADD(wk, -8, GETDATE()) 
        THEN 0 ELSE FlagOfColumn4 END
...