使用相同的case语句更新和设置多个字段

时间:2014-01-16 23:56:55

标签: sql-server-2008 sql-update case

我希望能够为具有不同值的两个不同字段设置值,这些字段满足相同的case语句。

例如

DECLARE @RATE1 AS FLOAT
DECLARE @RATE2 AS FLOAT


UPDATE TABLE1
SET CATEGORY = CASE WHEN DATE >= '16 JAN 2014' THEN 'NEW'

但与此同时我也希望SET @ RATE1 = 0.001

然后

WHEN DATE < '16 JAN 2014' THEN 'OLD'
END

但与此同时我也希望SET @ RATE2 = 0.002

这有可能吗?

1 个答案:

答案 0 :(得分:0)

UPDATE TABLE1
SET CATEGORY = CASE WHEN DATE >= '16 JAN 2014' THEN 'NEW'
                    WHEN DATE < '16 JAN 2014' THEN 'OLD' 
               END

要为变量设置值,您需要一个单独的语句,如

   IF EXISTS (SELECT 1 FROM TABLE1 WHERE DATE >= '16 JAN 2014')
    BEGIN
      SET @RATE1 = 0.001;
    END 
  ELSE
    BEGIN
      SET @RATE2 = 0.002;
    END 

假设您的DATE是VARCHAR字段,并且它以DD MMM YYY格式存储日期。虽然存储日期数据,但不是一个很好的数据类型选择。