0

我有一些以 SQL 存储数据的智能测量设备。这些设备每天记录一次数据,我需要能够获取最新数据并将其与前一天的数据进行比较。该设备是一个带有刻度盘的计数器。我们将当前的表盘读数和表盘读数的日期存储在 SQL 中。条件是获取当前刻度盘读数,并检查前一天的刻度盘读数是否大于当天的(例如 2013 年 6 月 13 日的刻度盘读数小于 2013 年 6 月 10 日)。问题是我不知道如何在拨号读数小于“CURRENT_TIMESTAMP”的时间进行 SQL 回溯并让它显示该数据。

表结构如下:

-------------------------------------    
DeviceNo| RecordingDate| DialReading|
-------------------------------------     
1234    | 6/10/13      | 504
-------------------------------------
1232    | 6/10/13      | 8899   
4

1 回答 1

0

尝试使用这个,如果它不起作用,请告诉我,我不记得 CTE 的别名是否可以在 CTE 之外使用,如果可以,别名可能会导致问题,我会重新命名它们就是这样。

--cte selects readings information based on current database system timestamp
WITH cte AS(
SELECT d.DeviceNo, r.RecordingDate, r.DialReading
FROM Devices d
inner join Modules m  on d.DeviceID = m.DeviceID
inner join Recordings r on m.ModuleID = r.ModuleID
WHERE  r.RecordingDate = CURRENT_TIMESTAMP)

--selects everything where the device numbers match cte's result set
--where the dial reading is higher than todays
--and finally where the recordingDate is less than the
--current database system timestamp

SELECT d.DeviceNo, r.RecordingDate, r.DialReading
FROM Devices d
inner join Modules m  on d.DeviceID = m.DeviceID
inner join Recordings r on m.ModuleID = r.ModuleID
WHERE cte.DeviceNo = d.DeviceNo
AND r.DialReading > cte.DialReading
AND r.RecordingDate < CURRENT_TIMESTAMP
于 2013-06-13T14:59:49.793 回答