[英]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.