您可以通過幾種方式做到這一點。
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子查詢(不是很優雅,但工程)。這是假設對於AvailbilityDate和resort的每個組合,只有一個具有給定最低價格的accomName。
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
您正在使用的SQL Server的味道?是否它是ProgresSQL,mySQL,Microsoft SQL(如果是這樣的版本?) –
MS SQL我可能需要也使它更清晰,通過工作組,但我想能夠得到Chalet名稱和Min Occ,但我不想要將它包含在組條件中 – richard
2005 MS SQL對不起 – richard