如何通过添加 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
我正在使用 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