1.)列出到目前为止所收到的每家酒店的收入,即DepartureDate
到目前为止,我已经尝试过了,但这是不对的,并且给我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 Table
请帮我解决这个问题
最佳答案
使用Sum()
表达式的DateDiff()
可以避免“不包括指定的表达式...作为聚合函数的一部分”的投诉。
SELECT
ROOM.HotelNo,
Sum(
DateDiff(
"d",
[ArrivalDate],
[DepartureDate]
) * ROOM_TYPE.RoomRate
) AS TotalRevenue
WHERE
子句包含DepartureDate > Now()
,我怀疑可以将结果筛选为尚未离开的结果。我想您想要的是<
而不是>
。考虑使用
INNER JOIN
而不是WHERE
子句来指定如何匹配表中的行。如果可以从Access查询设计器的“设计 View ”中构建此查询,则设置联接将很容易。而且查询设计器在连接两个以上的表时知道有关所需括号的规则...因此将生成使数据库引擎满意的SQL。关于sql - 我需要使用DATEDIFF进行几个查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19937467/