1

簡略化したシナリオ例では、特定のタイムスタンプと建物を指定して、70度に最も近いセンサー温度(「TemperatureOfRecord」と呼ばれる)を返すことが目的です。たとえば、午前8時のタイムスタンプの建物#1のTemperatureOfRecordは65度です。これは、65度が80度よりも70度に近いためです。「デルタ」列は、センサー温度から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

上記のクエリの結果は以下のとおりです。

ここに画像の説明を入力してください

4

1 に答える 1