В моем упрощенном примере сценария моя цель - вернуть температуру датчика (называемую «TemperatureOfRecord»), которая находится ближе всего к 70 градусам, учитывая конкретную метку времени и здание. Например, температура №1 для здания № 1 для отметки времени 8:00 утра составляет 65 градусов, потому что 65 градусов ближе к 70 градусам, чем 80 градусов. Столбец «Дельта» представляет собой вычисленный столбец, который возвращает абсолютное значение температуры датчика минус 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
Результаты вышеуказанного запроса приведены ниже.
Это сделало трюк! Большое спасибо, @Matt. – MikeyWazz