0

記録を報告していない測定デバイスのリストと、最後の記録からの日数を表示するクエリを作成するのに助けが必要です。

テーブル構造は次のとおりです。

select d.deviceno, r.lastrecordingdate, --Here's where i need a table to act as a COUNT for --number of days the device has not logged.
from modules m
join devices d on m.deviceid = d.deviceid
join recordings r on m.recordingid = r.recordingid
--i really don't know what to write beyond this. I am drawin
4

1 に答える 1

0
SELECT D.deviceno, 
       DateDiff(day, CURRENT_TIMESTAMP, max_date) AS days_since
  FROM (
          SELECT D.deviceno,
                 COALESCE(MAX(R.last_recordingdate), '2000-01-01') AS max_date
            FROM Modules M
                 INNER JOIN Devices D
                    ON M.deviceid = D.deviceid
                 LEFT JOIN Recordings R 
                    ON M.recordingid = R.recordingid
                 GROUP BY D.deviceno
        ) FOO
  WHERE max_date < DateAdd(day, -7, CURRENT_TIMESTAMP)

データベースを指定しなかったので、SQL Server 固有の構文 (日付演算関数) を使用しています。COALESCE は、何も記録していないデバイスを確実にキャプチャすることです。

于 2013-07-12T14:48:22.610 に答える