【发布时间】:2010-04-02 23:15:22
【问题描述】:
我正在尝试让 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。
【问题讨论】:
标签: sql sql-server tsql sql-server-2008