我希望计算当前和&之间的差异。 last time by timestamp column?
我的表格安排如下:
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
我可以找到的唯一解决方案是使用行号,我没有选择,如果有人可以帮助id真的很赞赏它作为它破坏我的大脑。
答案 0 :(得分:0)
这是一个可以帮助您的查询。只需修改它以适合您的需要/表名/等。
with sub as (
select meterid,
actualtimestamp,
value,
row_number() over (partition by meterid order by actualtimestamp desc) as rn
from test
)
select meterid,
actualtimestamp,
value,
value - isnull((select value
from sub
where s.meterid = meterid
and rn = s.rn + 1), value) as answer
from sub s
order by meterid, actualtimestamp desc;
它的基本功能是使用row_number()聚合函数添加行号。使用行号,查询尝试从前一个条目获取值并获得值差异。
答案 1 :(得分:0)
在SQL Server 2008中,我建议在outer apply
使用您的要求查找差异的短代码
select t.*, isnull((t.value - tprev.value),0) as diff
from test t outer apply
(select top 1 tprev.*
from test tprev
where tprev.meterid = t.meterid and
tprev.actualtimestamp < t.actualtimestamp
order by tprev.actualtimestamp desc
)tprev