[英]Syntax error in Sql MS-Access
我的問題:業主想知道到目前為止每個酒店的每個房間類型產生的收入(即where CheckOutDate < DATE()
)。
計算必須在 SQL 語句中完成。
使用 DateDiff 函數datediff('d', checkindate, checkoutdate)
確定每次預訂的逗留時間(即天數datediff('d', checkindate, checkoutdate)
並將該值乘以房價。
您的輸出格式應如下頁所示。 您的收入總額可能會有所不同。 請記住,收入金額可能每天都在變化,因為我們只想包括已完成的預訂,而不是當前或未來的預訂。
select
room.hotelID, room.roomtype,
datediff('d', Reservation.CheckOutDate, Reservation.CheckInDate) * ROOM_TYPE.RoomRate as Revenue
from
Reservation
inner join
Room on Room.hotelID = Reservation.HotelID
inner join
ROOM_TYPE on ROOM_TYPE.RoomType = Room.roomtype
group by
Room.HotelID, Room.roomtype;
我在此中缺少語法錯誤語句。
如何解決 MS Access 中的此錯誤?
使用 Group By 子句時,任何不屬於分組的列都必須聚合。 在您的情況下, Room.HotelID 和 Room.RoomType 是分組列。 所以它們在你的 SELECT 子句中沒問題,原樣。 但收入需要匯總。 我希望您希望使用 SUM 聚合來匯總每種房間類型的所有收入值。 嘗試這個...
select room.hotelID,
room.roomtype,
SUM( datediff(day,Reservation.CheckOutDate,Reservation.CheckInDate )*ROOM_TYPE.RoomRate) as Revenue
from Reservation
inner join Room on Room.hotelID=Reservation.HotelID
inner join ROOM_TYPE on ROOM_TYPE.RoomType=Room.roomtype
group by Room.HotelID, Room.roomtype;
您仍然應該學習如何使用查詢生成器,但我認為括號應該是這樣的:
select
Room.HotelID, Room.roomtype,
sum(
datediff('d',Reservation.CheckOutDate,Reservation.CheckInDate) *
ROOM_TYPE.RoomRate
) as Revenue
from
((Reservation inner join Room on Room.hotelID = Reservation.HotelID)
inner join ROOM_TYPE on ROOM_TYPE.RoomType = Room.roomtype)
group by
Room.HotelID, Room.roomtype;
所以總結一下:
對您在 Access 2010 中的數據運行以下查詢會產生以下結果集:
hotelID roomtype Revenue
------- -------- ----------
1000 D $23,000.00
1000 F $23,100.00
1000 S $20,700.00
1111 D $36,500.00
1111 F $16,450.00
1111 S $15,300.00
SELECT
rm.hotelID,
rm.roomtype,
Sum(DateDiff('d', rs.CheckInDate, rs.CheckOutDate) * rt.RoomRate) AS Revenue
FROM
(
ROOM AS rm INNER JOIN RESERVATION AS rs
ON (rm.roomno = rs.RoomNo) AND (rm.hotelID = rs.HotelID)
)
INNER JOIN ROOM_TYPE AS rt
ON rm.roomtype = rt.RoomType
WHERE rs.CheckOutDate < Date()
GROUP BY rm.hotelID, rm.roomtype;
在 MS Access 中,我們必須在 from 語句中的子句中的括號 () 中提及。 除此之外, datediff 函數必須是聚合函數的一部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.