Estoy intentando hacer que SQL Server ordene por una columna desde una selección anidada. Sé que esta no es la mejor manera de hacerlo, pero es necesario hacerlo.SQL Server ORDER BY/WHERE con la selección anidada
Tengo dos mesas, reservas y artículos de reserva. BookingItems contiene los campos StartDate y EndDate, y puede haber varios BookingItems en una reserva. Necesito encontrar la fecha de inicio más antigua y la última fecha de finalización de BookingItems, luego filtrar y ordenar por estos valores.
Lo he intentado con una selección anidada, pero cuando trato de usar una de las columnas seleccionadas en un WHERE o ORDER BY, obtengo un "Nombre de columna no válido".
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'
¿Falta algo sobre SQL ordering? Estoy usando SQL Server 2008.
funciona perfectamente, gracias. – Echilon