否则什么都不做SQL查询

时间:2017-02-27 19:33:56

标签: sql if-statement case

我在DB表froiexported中有一个字段claim3,该字段设置为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

2 个答案:

答案 0 :(得分: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'
      )

如果您还需要在前一天设置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) 

答案 1 :(得分:0)

如果满足条件,如何将其设置为1,否则设置为当前值?