私はSQLにかなり慣れていないので、優しくしてください。さまざまな場所にあるさまざまなセンサーからの温度を記録するテーブルがあります。より簡単であれば、喜んでデータベース構造を再調整します。
列は次のとおりです: ID int、SensorID tinyint、LocationID tinyint、TempReadDT datetime、Temp ( 10 進数 4,1 )
センサーは数分ごとに読み取り値を記録します。概要ページに表示する次の情報を取得するために、1 つのストアド プロシージャを使用したいと考えています。
- 現在の室内温度 (センサー 1 からの最新の読み取り値)
- 現在の屋外温度 (センサー 2 からの最新の読み取り値)
- 過去 24 時間の平均室内温度
- 過去 7 日間の平均室内温度
- 最終更新日時(記録された最新の日付)
個々のSELECT
ステートメント (以下) を作成しましたが、データが 1 つの行に返されるように、それらを 1 つのクエリに結合する方法がわかりません。
SELECT TOP 1 Temp AS "intTemp"
FROM Temperature
WHERE SensorID = 1
ORDER BY ID DESC
SELECT TOP 1 Temp AS "extTemp"
FROM Temperature
WHERE SensorID = 2
ORDER BY ID DESC
SELECT AVG(Temp) AS "avgTemp24h"
FROM Temperature
WHERE SensorID = 1
AND TempReadDT >= DATEADD(DAY,-1, SYSDATETIME())
SELECT AVG(Temp) AS "avgTemp7d"
FROM Temperature
WHERE SensorID = 1
AND TempReadDT >= DATEADD(DAY,-7, SYSDATETIME())
SELECT MAX(TempReadDT)
FROM Temperature