否则不执行SQL查询

否则不执行SQL查询,sql,if-statement,case,Sql,If Statement,Case,在DB tableclaim3中有一个字段,froiexported,该字段设置为1或0。我想运行一个更新,如果case语句中的条件得到满足,froiexported中的值设置为1,否则不执行任何操作。下面将使我的结果每天都不正确 update claim3 set froiexpoted = CASE WHEN froimaintdate >= dateadd(day,datediff(day,1,GETDATE()),0) AND froimaintdate &l

在DB table
claim3
中有一个字段,
froiexported
,该字段设置为1或0。我想运行一个更新,如果case语句中的条件得到满足,
froiexported
中的值设置为1,否则不执行任何操作。下面将使我的结果每天都不正确

update claim3
set froiexpoted = 
CASE
     WHEN froimaintdate >= dateadd(day,datediff(day,1,GETDATE()),0)
     AND froimaintdate < dateadd(day,datediff(day,0,GETDATE()),0)
     AND c1.jurst in ('AK', 'AL', 'CA', 'CO', 'FL', 'GA', 'IA', 'IN', 'KS', 'KY', 'LA', 'MA', 'ME', 'MN', 'MO', 'MS', 'NC', 'NE', 'NJ', 'PA', 'RI', 'SC', 'TN', 'TX', 'UT', 'VA', 'VT', 'WV')
     THEN '1'
     ELSE '0'
 END
更新索赔3
set froiexpected=
案例
当froimaintdate>=dateadd(day,datediff(day,1,GETDATE())时,0)
和froimaintdate
如果满足条件,则将其设置为1,否则设置为当前值如何?

您可以使用
where
子句:

update claim3
  set froiexpoted = 1
  where froiexpoted <> 1
    and froimaintdate >= dateadd(day,datediff(day,1,getdate()),0)
    and froimaintdate <  dateadd(day,datediff(day,0,getdate()),0)
    and c1.jurst in ('AK', 'AL', 'CA', 'CO', 'FL', 'GA', 'IA', 'IN'
      , 'KS','KY', 'LA', 'MA', 'ME', 'MN', 'MO', 'MS', 'NC', 'NE'
      , 'NJ', 'PA', 'RI', 'SC', 'TN', 'TX', 'UT', 'VA', 'VT', 'WV'
      )
更新索赔3
设置FROIExpected=1
Froiexpected 1在哪里
和froimaintdate>=dateadd(day,datediff(day,1,getdate()),0)
和froimaintdate
如果还需要为前一天设置0:

update claim3
  set froiexpoted = case
    when c1.jurst in ('AK', 'AL', 'CA', 'CO', 'FL', 'GA', 'IA', 'IN'
          , 'KS','KY', 'LA', 'MA', 'ME', 'MN', 'MO', 'MS', 'NC', 'NE'
          , 'NJ', 'PA', 'RI', 'SC', 'TN', 'TX', 'UT', 'VA', 'VT', 'WV'
          )
      then 1
    else 0 
    end
  where froimaintdate >= dateadd(day,datediff(day,1,getdate()),0) 
    and froimaintdate <  dateadd(day,datediff(day,0,getdate()),0) 
更新索赔3
set froiexpected=case
当c1.jurst在('AK','AL','CA','CO','FL','GA','IA','in'
“KS”、“KY”、“LA”、“MA”、“ME”、“MN”、“MO”、“MS”、“NC”、“NE”
“NJ”、“PA”、“RI”、“SC”、“TN”、“TX”、“UT”、“VA”、“VT”、“WV”
)
那么1
其他0
结束
其中froimaintdate>=dateadd(day,datediff(day,1,getdate()),0)
和froimaintdate
ELSE froiexpitted
如果您不想让它做任何事情,您不必在case语句中使用ELSE子句。别提了。用一个where。。。这就是过滤器存在的原因。理论上这是可行的,但如果每天都运行它,这会不会总是将前几天设置为0?一旦设置了1,我希望它保持不变。这段代码没有将任何内容设置为零@Dizzle——它只将内容设置为1。@Dizzle这只更新前一天的行,并且只更新需要为1而不是1的行。