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/

10-11 21:55
查看更多