【发布时间】:2021-11-19 19:00:03
【问题描述】:
我正在学习 SQL 并尝试加入几个模拟酒店表并进行一个简单的查询,以显示客人的串联姓名和他们进行的预订数量。
无论我如何尝试重组查询,我都会遇到两个错误之一。
如果我这样尝试:
SELECT
[Guests].FirstName + ' ' + [Guests].LastName AS 'Guest Name',
[ReservationsRooms].Reservation_ID
FROM
[ReservationsRooms]
JOIN
[Reservations] ON [ReservationsRooms].Reservation_ID = [Reservations].Reservation_ID
JOIN
[Guests] ON [Reservations].Guest_ID = [Guests].Guest_ID
GROUP BY
[Guests].Guest_ID
我收到一个错误:
选择列表中的“Guests.FirstName”列无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
我认为可能是模棱两可的问题,所以我也尝试了如下:
SELECT
[Guests].FirstName + ' ' + [Guests].LastName AS 'Guest Name',
COUNT([ReservationsRooms].Reservation_ID) AS 'Reservations'
FROM
[ReservationsRooms]
JOIN
[Reservations] ON [ReservationsRooms].Reservation_ID = [Reservations].Reservation_ID
JOIN
[Guests] ON [Reservations].Guest_ID = [Guests].Guest_ID
GROUP BY
[Guests].Guest_ID, 'Guest Name'
但这也导致了错误:
每个 GROUP BY 表达式必须至少包含一个不是外部引用的列。
我正在尝试创建一个返回如下内容的查询结果:
Reservations Guest Name
-------------------------------
4 Mack Simmer
3 Bettyann Seery
2 Duane Cullison
2 Aurore Lipton
2 Maritza Tilton
2 Joleen Tison
具体来说,我只希望查询中的这两列,但似乎找不到方法。
【问题讨论】:
-
对于如何使用聚合似乎有些误解,您需要根据Minimal, Reproducible Example为您的预期结果包含示例数据
标签: sql-server tsql group-by