【发布时间】:2022-12-03 01:07:41
【问题描述】:
我们有一个 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()(正确显示每一本书),在找出确切的哪本书等之后尝试对每本书进行硬编码。我怎样才能解决这个问题?
【问题讨论】:
标签: sql-server ssms