1.)列出到目前为止所收到的每家酒店的收入,即DepartureDate <NOW()。计算必须在SQL语句中完成。使用DateDiff函数确定每个预订的时间(即天数),然后将此值乘以房费(而不是折现率)。在输出中包括酒店编号。
到目前为止,我已经尝试过了,但这是不对的,并且给我DateDiff语句的聚合函数错误
SELECT ROOM.HotelNo, DateDiff("d", [ArrivalDate], [DepartureDate]) * ROOM_TYPE.RoomRate AS TotalRevenue
FROM RESERVATION, ROOM_TYPE, ROOM
WHERE ROOM.RoomType = ROOM_TYPE.RoomType
AND RESERVATION.RoomNo = ROOM.RoomNo
AND DepartureDate > Now()
GROUP BY ROOM.HotelNo;
这是您可以看到表格的链接
RelationShip表 <-链接
请帮我解决这个问题
使用Sum()
该DateDiff()
表达式可避免出现“不包括指定的表达式...作为聚合函数的一部分”的抱怨。
SELECT
ROOM.HotelNo,
Sum(
DateDiff(
"d",
[ArrivalDate],
[DepartureDate]
) * ROOM_TYPE.RoomRate
) AS TotalRevenue
该WHERE
子句包括DepartureDate > Now()
,我怀疑会将结果筛选为尚未离开的结果。我想你想<
代替>
那里。
考虑使用INNER JOIN
而不是使用WHERE
子句来指定如何匹配表中的行。如果可以从Access查询设计器的“设计视图”中构建此查询,则设置联接将很容易。而且查询设计器知道在连接两个以上的表时有关必需括号的规则...因此将产生使数据库引擎满意的SQL。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句