SQL Server多个名称的最大值
我正在尝试创建一个查询,以获取有预订房间的所有最大数量,我的查询将正确返回所有内容,但当我尝试查找最大数量时,它将只返回1个结果,而不是应该显示的3个结果,它将只返回最大数量 当前结果:仅显示最多1个酒店SQL Server多个名称的最大值,sql,sql-server,Sql,Sql Server,我正在尝试创建一个查询,以获取有预订房间的所有最大数量,我的查询将正确返回所有内容,但当我尝试查找最大数量时,它将只返回1个结果,而不是应该显示的3个结果,它将只返回最大数量 当前结果:仅显示最多1个酒店 HotelName RoomType Room Count ------------------------------ -------------------- ----------- MGM Grand
HotelName RoomType Room Count
------------------------------ -------------------- -----------
MGM Grand Single 6
计数前的查询结果:
HotelName RoomType Room Count
------------------------------ -------------------- -----------
The Mirage Double 3
The Palazzo Double 1
MGM Grand Double Deluxe 4
MGM Grand Family 2
The Mirage Family 4
MGM Grand Single 6
The Palazzo Suite 1
预期结果:注意:在Palazzo上,因为is有两个相同的计数,它显示两个或一个或另一个都可以工作
HotelName RoomType Room Count
------------------------------ -------------------- -----------
MGM Grand Single 6
The Mirage Family 4
The Palazzo Suite 1
当前脚本:
SELECT h.HotelName, hr.RoomType, COUNT(*) AS 'Room Count'
FROM RESERVATIONDETAIL AS rd
JOIN ROOM r ON r.RoomID = rd.RoomID
JOIN HOTELROOMTYPE hr ON hr.HotelRoomTypeID = r.HotelRoomTypeID
JOIN HOTEL h ON h.HotelID = hr.HotelID
WHERE rd.CheckinDate >= '140901' AND rd.CheckinDate <= '141031'
GROUP BY h.HotelName, hr.RoomType
HAVING COUNT(*) =
(SELECT MAX(RoomCount)
FROM
(SELECT h.HotelName, COUNT(*) AS RoomCount
FROM RESERVATIONDETAIL AS rd
JOIN ROOM r ON r.RoomID = rd.RoomID
JOIN HOTELROOMTYPE hr ON hr.HotelRoomTypeID = r.HotelRoomTypeID
JOIN HOTEL h ON h.HotelID = hr.HotelID
WHERE rd.CheckinDate >= '140901' AND rd.CheckinDate <= '141031'
GROUP BY h.HotelName, hr.RoomType)x)
我想这会让你得到你想要的。也许有一种方法可以减少一个子查询,但我相信总体思路是:
选择d.HotelName、d.RoomType、d.[房间数量]
从…起
选择d.*,按酒店名称顺序按[Room Count]描述分区上的行数
从…起
选择h.HotelName、hr.RoomType、COUNT*作为“房间计数”
从RESERVATIONDETAIL作为rd
在r.RoomID=rd.RoomID上加入房间r
在hr.HotelRoomTypeID=r.HotelRoomTypeID上加入HOTELROOMTYPE hr
在h.HotelID=hr.HotelID上加入酒店h
其中rd.CheckinDate>='140901'和rd.CheckinDate您需要MAXCOUNT…GROUPBY HotelName如果您仅对记录进行MAXCOUNT,则将获得所有记录的最大值。通过使用group By,您可以聚合所有不同的酒店名称。