如何通过添加 CONDITIONAL 子句来修改我的 T-SQL UPDATE 查询?

How to modify my T-SQL UPDATE query by adding a CONDITIONAL clause?

我正在使用 SQL Server 2014,我有一个更新查询 运行 在 table 上调用 "ResStayDate"(摘录如下所示):

ID      StayDate        RateAmount
-----------------------------------
256     2015-11-28      248.00
256     2015-11-29      248.00
256     2015-11-30      248.00
256     2015-12-01        0.00
256     2015-12-02        0.00
256     2015-12-03        0.00

我需要更新 RateAmount 列,我的 UPDATE 查询如下:

USE MyDatabase

UPDATE ResStayDate
SET RateAmount = CASE ResID
                    WHEN 256 THEN 155.00
                    ELSE RateAmount
                 END

我的问题是,如果我 运行 这个查询 "as is",它将用 155.00 更新所有行。我只需要更新 StayDate 在 2015 年 12 月的那些行。

输出应该是这样的:

     ID      StayDate      RateAmount
    ---------------------------------
    256     2015-11-28      248.00
    256     2015-11-29      248.00
    256     2015-11-30      248.00
    256     2015-12-01      155.00
    256     2015-12-02      155.00
    256     2015-12-03      155.00

如何修改我的查询,以便它只更新 ResStayDate table 的那部分?

UPDATE ResStayDate
SET RateAmount = 155
WHERE ID=256 and StayDate between '2015-12-1' and '2015-12-31'

这会限制您对符合上述条件的记录进行更新。 SQL 这样读起来相当容易 - 不需要太多解释 ;-).

编辑

我在发布我的第一个版本后才看到你的时间限制......

如果您特别只想影响 12 月的记录,请使用 DATEPART 函数:

USE MyDatabase

UPDATE ResStayDate

SET RateAmount = CASE WHEN ResID = 256 and DATEPART(MONTH,StayDate) = 12 THEN 155.00

ELSE RateAmount

END