【发布时间】:2019-03-17 22:51:03
【问题描述】:
我有一个 T-SQL 表 SystemReading,它保存水系统的仪表读数。在给定站点获取下一个读数后,我需要从当前读数中减去前一个读数,以获得要插入 SystemUsage 表的两个读数之间的使用情况。第一个表有 ReadingID(身份)、SysMeterID(仪表站点)、Reading、ReadingDate。第二个表,我的usage表,有UsageID(身份)、SysMeterID(仪表站点)、Usage、ReadingDate。我需要确保触发器中仅使用与当前相同的 SysMeterID 的先前读数。我以前使用 CTE 来查找此用法,但现在我需要它自动计算并插入到新的用法表中。任何帮助表示赞赏。
这是我的旧 CTE 供参考:
;WITH tblDifference as (
SELECT Row_Number() OVER (ORDER BY ReadingID) as RowNumber, Reading, SysMeterID, ReadingDate
FROM Supplydb.app.SystemReading
WHERE SysMeterID = 18
)
SELECT Cur.Reading, Cur.Reading - Prv.Reading as TotalPumped, cur.ReadingDate as Date
FROM tblDifference as Cur
LEFT OUTER JOIN tblDifference Prv
ON Cur.RowNumber = Prv.RowNumber+1
where cur.rownumber = 3
ORDER BY cur.ReadingDate DESC
【问题讨论】:
标签: sql tsql sql-server-2008 triggers