2014-02-19 50 views
1

我試圖在Access中使用SQL來獲取房地產經紀人持有的不同類型房屋的最低和最高價格,然後按房屋類型分組。嘗試使用兩個子查詢從數據庫使用SQL獲取房屋的最低和最高價格

這是迄今爲止我所使用的SQL,它只能得到最小值或最大值,但不能同時得到這兩個值。

SELECT Price, PropertyType 
FROM SaleProperty 
WHERE Price IN (SELECT MAX (Price) FROM SaleProperty GROUP BY PropertyType); 

我本以爲這工作的代碼是:

SELECT Price, PropertyType 
FROM SaleProperty 
WHERE Price IN (SELECT MAX (Price) FROM SaleProperty GROUP BY PropertyType) 
WHERE Price IN (SELECT MIN (price) FROM SaleProperty GROUP BY PropertyType); 

但是沒有,我得到它說缺少運算符語法錯誤。

輸出應該是這樣的:今晚

MinimumPrice  MaximumPrice  PropertyType 
£99999999   £9999999999  Terrace 
£1111111   £1111111111  Semi-detached 
£3333333   £4444444444  Link 

末SQL的問題,我答應!

乾杯

回答

2

,因爲查詢不能有多個WHERE條款你得到一個語法錯誤。當您有多個條件時,需要有一個邏輯運算符,如ORAND,將它們連接起來。

你可以重寫查詢是這樣的:

SELECT Price, PropertyType 
FROM SaleProperty 
WHERE Price IN (SELECT MAX (Price) FROM SaleProperty GROUP BY PropertyType) 
    OR Price IN (SELECT MIN (price) FROM SaleProperty GROUP BY PropertyType); 

注:我假設你做這種方式,而不是單行,要求既MINMAX因爲你計劃添加更多的列到SELECT列表,這個查詢可以讓你做。

+0

當使用此我得到的錯誤 –

+0

@MichaelDelahorne你說得對,我錯過了'GROUP BY'子查詢裏面的「最多一個記錄可以通過這個子查詢返回」 。現在嘗試一下,看看它是否有效。 – dasblinkenlight

+0

這確實顯示了最低和最高價格,所以謝謝!有什麼辦法可以將最小值和最大值分別放入自己的列中?謝謝! –

3

試試這個:

SELECT Min(Price), Max(Price), PropertyType 
FROM SaleProperty 
Group by PropertyType 
相關問題