在我的简化示例场景中,我的目标是在给定特定时间戳和建筑物的情况下返回最接近 70 度的传感器温度(称为“TemperatureOfRecord”)。例如,建筑#1 的 8:00 am 时间戳的 TemperatureOfRecord 是 65 度,因为 65 度比 80 度更接近 70 度。“Delta”列是一个计算列,它返回传感器温度减去 70 度的绝对值。我使用差异来测试每个传感器温度与 70 度的目标温度。
下面的嵌套相关子查询返回正确的结果,但是我在将这种方法扩展到我的实际场景时遇到了很多麻烦。因此,我想问一下是否有更简单的方法可以使用。
SELECT
tt.TmStamp
, tt.Building
, tt.Sensor
, tt.Temperature
, tt.Delta
, (SELECT tt2.Temperature
FROM dbo.TempTest tt2
WHERE tt2.Building = tt.Building
AND tt2.TmStamp = tt.TmStamp
AND tt2.Delta =
(SELECT MIN(tt3.Delta)
FROM dbo.TempTest tt3
WHERE tt3.Building = tt.Building
AND tt3.TmStamp = tt.TmStamp)
) AS TemperatureOfRecord
FROM dbo.TempTest tt
上述查询的结果如下。