1.
MinPrice = (select min((select hotelsRooms.price from hotelsRooms where hotelsRooms.HotelI ….
гораздо читабельнее чем длинющий бла-бла-бла as MinPrice
2. вложенные селекты чаще всего - зло, хотя конечно умный планировщик с ними справляется...
3. аналогично с сабселектами в условиях
4. стоит открыть для себя:
а) временные таблицы in-memory
б) cte
4.а:
declare @minmaxprices table (hotel_id int, min_price decimal, max_price decimal)
insert into @minmaxprices
select hotel_id, min(price), max(price) from hotelrooms group by hotel_id
select
…
[самая низкая цена] = minmaxprices.minprice
…
from hotels
…
left join @minmaxprices as minmaxprices on minmaxprices.hotel_id=hotels.hotel_id
4.б:
;with cte_min_max_prices(hotel_id, minprice, maxprice)
as ( select hotel_id, min(price), max(price) from hotelrooms group by hotel_id )
select
…
[самая низкая цена в отеле] = cte_min_max_prices.minprice
...
from hotels
….
left join cte_min_max_prices on cte_min_max_prices.hotel_id=hotels.hotel_id