我们有一个包含3家书店的数据库,所有书店都附有库存清单和随机库存单位的图书。查询应该显示每家书店,因此有3行,后面是数量(X书店中哪本书的值最高,用MAX(INV.UnitsInStock)
计算),最后是第三列,显示相应图书的标题。
SELECT BS.Name, B.Title, MAX(UnitsInStock) AS 'Quantity'
FROM Inventories AS INV
JOIN BookShops AS BS ON BS.Id = INV.ShopId
JOIN Books AS B ON B.Id = INV.BookId
GROUP BY BS.Name
这会产生以下错误:
列“Books.Title”在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中。
我也试过这个:
SELECT BS.Name, MAX(UnitsInStock) AS 'Quantity'
FROM Inventories AS INV
JOIN BookShops AS BS ON BS.Id = INV.ShopId
JOIN Books AS B ON B.Id = INV.BookId
GROUP BY BS.Name
这显示了到目前为止的正确数据,但没有书名。
我试过临时表,string_agg()
(它能正确显示每一本书),试过在找到每一本书后对每一本书进行硬编码等等。
我该如何解决这个问题?
1条答案
按热度按时间83qze16e1#
我认为您需要将B.Title添加到GROUP BY中: