【发布时间】:2015-03-22 10:32:34
【问题描述】:
update Room set Status = case
when Room_Rev.In_DateTime IS NOT NULL and Room_Rev.Out_DateTime IS NULL
then 'U'
when Room_Rev.In_DateTime IS NOT NULL and Room_Rev.Out_DateTime IS NOT NULL
then 'A'
when Room.Status!='R' and Room.Status!='U' and Room.Status!='A'
then Room.Status
else 'R'
end
FROM Room JOIN Room_Rev
ON Room.Room_ID=Room_Rev.Room_ID
and
((Room_Rev.Start_Date >= '2015-03-22' and Room_Rev.End_Date <= '2015-03-22')
OR
(Room_Rev.Start_Date<= '2015-03-22' and Room_Rev.End_Date> '2015-03-22')
OR
(Room_Rev.Start_Date< '2015-03-22' and Room_Rev.End_Date>= '2015-03-22'))
如何在查询中按 Rev_ID desc 添加订单? 有两张表,分别是 Room 和 Room_Rev, 它们是一对多的关系
最后两行ROM0006已经填了In_DateTime和Out_DateTime, 因此它考虑退房, 最后一行插入新的预订, In_DateTime 为空 因此我需要查询返回“R”(保留状态)
【问题讨论】:
-
这真的是 Microsoft SQL 服务器吗?如果有,是哪个版本?
-
你想达到什么目的?
-
我尝试通过比较开始日期和结束日期来获取房间状态,然后更新房间表
-
不能在更新语句中使用 order by 子句。在这里订购可以给您什么?
-
UPDATE只是更新所有符合WHERE标准的行 - 在 SQL Server 中,ordering 真的不需要或没有任何好处......因此,UPDATE不支持任何ORDER BY...
标签: sql sql-server