gpt4 book ai didi

SQL Server ORDER BY/WHERE 与嵌套选择

转载 作者:行者123 更新时间:2023-12-02 22:32:26 24 4
gpt4 key购买 nike

我正在尝试让 SQL Server 按嵌套选择中的列进行排序。我知道这不是最好的方法,但必须这样做。

我有两个表,Bookings 和 BookingItems。 BookingItems 包含 StartDate 和 EndDate 字段,并且一个 Booking 上可以有多个 BookingItems。我需要从 BookingItems 中找到最早开始日期和最晚结束日期,然后按这些值进行过滤和排序。

我尝试过嵌套选择,但是当我尝试在 WHERE 或 ORDER BY 中使用选定的列之一时,我收到“无效的列名称”。

SELECT b.*, (SELECT COUNT(*) FROM bookingitems i WHERE b.BookingID = i.BookingID) AS TotalRooms,
(SELECT MIN(i.StartDate) FROM bookingitems i WHERE b.BookingID = i.BookingID) AS StartDate,
(SELECT MAX(i.EndDate) FROM bookingitems i WHERE b.BookingID = i.BookingID) AS EndDate
FROM bookings b LEFT JOIN customers c ON b.CustomerID = c.CustomerID WHERE StartDate >= '2010-01-01'

我是否遗漏了有关 SQL 排序的信息?我使用的是 SQL Server 2008。

最佳答案

这应该不是问题。您可以发布失败的确切查询吗?

此外,对结果进行分组会比运行嵌套查询更容易且可能更快:

SELECT 
TotalRooms = COUNT(*)
, StartDate = MIN(i.StartDate)
, EndDate = MAX(i.EndDate)
FROM bookings b
LEFT JOIN bookingitems bi
ON b.BookingID = bi.BookingID
GROUP BY b.BookingID
WHERE MIN(i.StartDate) >= '2010-01-01'
ORDER BY StartDate, EndDate

关于SQL Server ORDER BY/WHERE 与嵌套选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2567167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com