我对 SQL 很陌生,所以请温柔一点。我有一张表格,记录来自不同位置的各种传感器的温度。如果它更容易,我很乐意重新调整数据库结构。
这些列是: ID int、 SensorID tinyint、 LocationID tinyint、 TempReadDT datetime、 Temp(十进制 4,1)
传感器每隔几分钟记录一次读数,我希望有一个存储的过程来获取以下信息以显示在摘要页面上:
- 当前室内温度(传感器 1 的最新读数)
- 当前室外温度(传感器 2 的最新读数)
- 过去 24 小时室内平均温度
- 过去 7 天的平均室内温度
- 最后更新日期时间(记录的最新日期)
我已经创建了单独的SELECT
语句(如下),但我不确定如何将它们组合到一个查询中,以便在一行中返回数据。
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