Sql server 基于多个条件更新一列的SQL查询

Sql server 基于多个条件更新一列的SQL查询,sql-server,sql-update,conditional-statements,Sql Server,Sql Update,Conditional Statements,例如,表“tbl”有a、b、dt和标志列。其中a列和b列一起形成唯一的组合 对于所有具有未来日期的记录,需要将所有标志列更新为非活动 并用max(dt)将flag标记为活动的,正如Nikolaus所说: 试试这个,它应该可以工作: updatetbl SET FLAG=0,其中dt>GETDATE(); 更新tbl SET FLAG=1,其中dt“最大(dt)”是什么意思?是否在一行中有多个日期列,并且要检查其中是否有值小于当前日期的列?请发布一些示例数据、预期结果和您的尝试,好吗?“dt”列包

例如,表“tbl”有a、b、dt和标志列。其中a列和b列一起形成唯一的组合

对于所有具有未来日期的记录,需要将所有标志列更新为非活动

并用max(dt)将flag标记为活动的,正如Nikolaus所说:

试试这个,它应该可以工作:

updatetbl SET FLAG=0,其中dt>GETDATE();

更新tbl SET FLAG=1,其中dt“最大(dt)”是什么意思?是否在一行中有多个日期列,并且要检查其中是否有值小于当前日期的列?请发布一些示例数据、预期结果和您的尝试,好吗?“dt”列包含日期,需要根据日期更新标志,如果对于一个唯一的组合,date is future date标志应处于非活动状态,对于相同的组合,下一个具有正确日期的记录应处于活动状态,例如
update tbl set flag=0,其中dt>GETDATE()
?如果a和b形成唯一值,则不应存在相同的记录。这与:更新tbl SET FLAG=case when dt>GETDATE()相同,然后0 else 1 endThank you@andesta.erfan
UPDATE tbl SET FLAG = 0 WHERE dt > GETDATE();
UPDATE tbl SET FLAG = 1 WHERE dt <= GETDATE();