我有一些智能测量设备可以在SQL中存储数据。这些设备每天记录一次数据,我需要能够获取最新数据并将其与前一天的数据进行比较。该设备是一个带表盘的计数器。我们在SQL中存储当前的拨号读数和拨号读取日期。 条件是当前拨号读数,并检查前一天的拨号读数是否超过当天(例如,6/13/13拨号读数小于6/10/13)。 问题是我不知道如何在拨号读数小于“CURRENT_TIMESTAMP”的时候进行SQL回顾并让它显示该数据。
表结构如下:
-------------------------------------
DeviceNo| RecordingDate| DialReading|
-------------------------------------
1234 | 6/10/13 | 504
-------------------------------------
1232 | 6/10/13 | 8899
答案 0 :(得分: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