我對SQL很陌生,請耐心等待!我試圖寫一個T-SQL查詢(SSMS)從數據庫中檢索兩個不同的最大「數量」來自同一個「名稱」值,命名爲「meter_data」,在下面的格式:SQL Server查詢同一列中的多個值
Name Date Time Value Quantity
------------------------------------------
Meter1 29-08-17 19:00 2.1 Amps
Meter1 29-08-17 19:30 2.5 Amps
Meter1 29-08-17 20:00 2.2 Amps
Meter1 29-08-17 19:00 231 Volts
Meter1 29-08-17 19:30 232 Volts
Meter1 29-08-17 20:00 235 Volts
Meter2 29-08-17 19:00 16.1 Amps
Meter2 29-08-17 19:30 17 Amps
Meter2 29-08-17 20:00 17.1 Amps
Meter2 29-08-17 19:00 415 Volts
Meter2 29-08-17 19:30 413 Volts
Meter2 29-08-17 20:00 412 Volts
etc... etc... etc... etc...
查詢的結果應返回以下數據:
Meter 1
Amps 2.5
Volts 235
這裏是我的查詢:
SELECT MAX(Value)
FROM meter_data
WHERE Name = 'Meter1'
AND (Quantity = 'Amps')
AND (Quantity = 'Volts')
上述結果是:
Meter1
NULL
查詢結果是明顯是不正確,因爲它與兩個Quantity
和在一起並返回NULL值。我嘗試了幾種不同的方式來達到這個目的(INNER JOIN
,IN
,INTERSECT
...)但是對於我的生活,我無法弄清楚我要去哪裏錯了。是否應該有另一個WHERE子句?
沒有要求免費的代碼,但如果有人可以指向我在正確的方向我會很感激!
謝謝。
你必須使用'組by':'SELECT名稱,數量,MAX (價值)FROM meter_data GROUP BY名稱,數量' – Marcelo
@Marcelo你有正確的答案,但你不需要這個名字嗎?選擇max(value)作爲最大值,從meter_data組中按數量選擇數量; – markg
不,我不需要結果中的名稱,只是特定儀表的'Amps'和'Volts'的最大值。 – EnergyAuto