我正在使用SQL Server 2014,我有一个UPDATE查询,该查询在名为" 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
我的问题是,如果我运行此查询"按原样#34;,它将使用155.00更新所有行。我只需要更新2015年12月StayDate
所在的行。
输出应该是这样的:
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
表的那一部分?
答案 0 :(得分:1)
UPDATE ResStayDate
SET RateAmount = 155
WHERE ID=256 and StayDate between '2015-12-1' and '2015-12-31'
这限制了您对上述条件适用的记录的更新。 SQL很容易以这种方式阅读 - 不需要太多解释; - )。
修改
我在发布第一个版本后才阅读你的时间限制......
答案 1 :(得分:1)
如果您特别想要在12月影响记录,请使用DATEPART功能:
USE MyDatabase
UPDATE ResStayDate
SET RateAmount = CASE WHEN ResID = 256 and DATEPART(MONTH,StayDate) = 12 THEN 155.00
ELSE RateAmount
END