【发布时间】:2013-02-21 10:11:39
【问题描述】:
我要计算时间戳列组织的当前值和上一个值之间的差异?
我的表组织如下:
MeterID(PK,FK,int.not null), ActualTimeStamp(smalldatetime,not null), Value(float,null)
Meter ID ActualTimeStamp Value
312514 2013-01-01 08:08:00 72
312514 2013-01-01 08:07:00 12
所以我的答案应该是72 - 12 = 60
我似乎能找到的唯一解决方案是使用我无法选择的行号,如果有人可以帮助我,我真的很感激它破坏了我的大脑。
【问题讨论】:
-
您使用的是哪个 RDBMS(例如 MySQL、SQL-Server、PostgreSQL)
-
为什么不能使用行号?
-
我认为我必须有一个行号列来组织?我的查询将是通过仪表 id 计算当前值和上一个值之间的差异的单个查询。我正在查看的一个选项是: SELECT [current].rowInt, [current].Value, ISNULL([next].Value, 0) - [current].Value FROM sourceTable AS [current] LEFT JOIN sourceTable AS [next] ON [next].rowInt = (SELECT MIN(rowInt) FROM sourceTable WHERE rowInt > [current].rowInt)
-
但我无法让它工作,抱歉我的 SQL 非常基础。
-
您能否提供更多有关您预期输出的信息,例如 Meter ID 312514 有 3 条记录?您想以另一列的形式获得答案吗?
标签: sql sql-server sql-server-2008 datediff