Вы можете сделать это несколькими способами.
1) Ранжирование - согласно решению a_horse_with_no_name
2) Группировка по и перекрестное применение.По сути, подключите столбцы, которые вы хотите сгруппировать в первом подзапросе, а затем все остальные столбцы перейдите во второй подзапрос.Используйте Order By во втором подзапросе для обработки любого столбца, к которому вы хотите применить MIN (или MAX).
SELECT a.AvailbilityDate,
a.resort,
b.AccomName,
b.min_occupancy,
b.Lowest
FROM
(
SELECT t1.AvailbilityDate, t1.resort
FROM myTable t1
GROUP BY t1.AvailbilityDate, t1.resort
) a
CROSS APPLY
(
SELECT TOP 1 t2.AccomName, t2.min_occupancy, t2.price as Lowest
FROM mytable t2
WHERE t2.AvailbilityDate = a.AvailbilityDate
AND t2.resort = a.resort
ORDER BY t2.price ASC
) b
3) Использовать подзапросы в операторе select (не очень элегантно, но работает) с Group By.Это предполагает, что существует только одно размещение с заданной минимальной ценой для каждой комбинации даты доступности и курорта.
SELECT a.AvailbilityDate,
a.resort,
(SELECT accomName FROM myTable t1
WHERE t1.AvailbilityDate = a.AvailbilityDate
AND t1.resort = a.resort
AND t1.price = MIN(a.price)
) as accomName,
(SELECT min_occupancy FROM myTable t1
WHERE t1.AvailbilityDate = a.AvailbilityDate
AND t1.resort = a.resort
AND t1.price = MIN(a.price)
) as min_occupancy,
MIN(a.price) as Lowest
FROM myTable a
GROUP BY a.AvailbilityDate, a.resort