0
我很新的SQL,所以請忍受我!從數據庫中返回最新的時間戳值
我有一個表 - MeterData
- 看起來像這樣:
(我也會注意,實際的數據庫有160多個meterIDs,23點的數量每meterID和150萬點+的記錄,而且每天增加!)
MeterID TimeStamp Value Quantity
------------------------------------------
meter1 09/10/2017 07:00:00 2.3 Power
meter1 09/10/2017 07:15:00 2.4 Power
meter1 09/10/2017 07:30:00 2.7 Power
meter1 09/10/2017 07:00:00 230 Voltage
meter1 09/10/2017 07:15:00 229 Voltage
meter1 09/10/2017 07:30:00 230 Voltage
meter1 09/10/2017 07:00:00 978 Energy
meter1 09/10/2017 07:15:00 979 Energy
meter1 09/10/2017 07:30:00 980 Energy
meter2 09/10/2017 07:00:00 15.8 Power
meter2 09/10/2017 07:15:00 14.7 Power
meter2 09/10/2017 07:30:00 18.9 Power
meter2 09/10/2017 07:00:00 415 Voltage
meter2 09/10/2017 07:15:00 414 Voltage
meter2 09/10/2017 07:30:00 414 Voltage
meter2 09/10/2017 07:00:00 15687 Energy
meter2 09/10/2017 07:15:00 15688 Energy
meter2 09/10/2017 07:30:00 15689 Energy
我想查詢數據庫返回多個「值」與最新的時間戳,但具體的「數量」和「MeterID」,例如我想達到的效果應該是這樣的:
Value MeterID Timestamp Quantity
--------------------------------------------------
2.7 meter1 09/10/2017 07:30:00 Power
18.9 meter2 09/10/2017 07:30:00 Power
如果我查詢這個數據庫:
SELECT TOP 1
Value, MeterID, Timestamp, Quantity
FROM
MeterData
WHERE
MeterID = 'meter1' AND Quantity = 'Power'
ORDER BY
Timestamp DESC
我得到想要的結果,但對於只有一個「MeterID」:
Value MeterID Timestamp Quantity
------------------------------------------------
2.7 meter1 09/10/2017 07:30:00 Power
但是,如何獲得多個MeterID的結果?很顯然,一個UNION
條款不工作,因爲我有一個ORDER BY
條款...我已經試過LAST_VALUE
和INNER JOIN
許多在此先感謝!
謝謝,但ROW_NUMBER不會作爲行工作的最新任何給定MeterID的時間戳將改變每15分鐘。 DB每天增加+ \ - 1500行。 – EnergyAuto
我不明白爲什麼ROW_NUMBER不起作用。如果通過爲每個Meterid,Value,Quantity組合選擇最新時間戳,則最新時間戳隨查詢而變化。 –
@LukStorms我不擔心OP的表增長。但是,是的,你的建議可以緩解他的顧慮 –