简体   繁体   English

如何根据MSSQL Server中受关注列的条件执行更新

[英]How to perform update based on condition on respected column in MSSQL Server

I have total 8 column in table where 4 column is of date, and remaining 4 is of flag respected to date. 我在表中共有8列,其中4列是日期,其余4列是迄今为止的标志。 So table structure look like this. 因此表结构如下所示。

Column1 Column2 Column3 Column4 FlagOfColumn1 FlagOfColumn2 FlagOfColumn3 FlagOfColumn4

I have data (date) in first 4 column and Null is as default in remain 4 column. 我在前4列中有数据(日期),在其余4列中默认为空。 now the condition is. 现在的条件是。 if date (in table in any column) is less than 8 week (compared with today's date). 如果日期(在任何列的表中)少于8周(与今天的日期相比)。 than i have to Set 0 to respected column. 比我必须设置0到尊敬的列。 Suppose Date of Column1 is less than 8 week than i have to set 0 to FlagOfColumn1 like that. 假设Column1的日期少于8周,那么我必须像这样将0设置为FlagOfColumn1。 I have written simple update query which is Setting 0 to all 4 flag column that i don't want. 我写了简单的更新查询,将我不想的所有4个标志列都设置为0。

Use CASE : 使用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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM