如果您使用的MS Access,我试试这个代码,你的问题: 我在MS Access中做了4个查询: Query1获取数据deviceId = 2和日期= 12/2/2015:
select id, reading from table1 where deviceid=2 and date=#12/2/2015#;
然后我让QUERY2从QUERY1得到行号:
select
(select count(*) from query1 where a.id>=id) as rowno,
a.reading from query1 a;
然后我让QUERY3得到差值场从QUERY2阅读:
select
(tbl2.reading-tbl1.reading) as diff
from query2 tbl1
left join query2 tbl2 on tbl1.rowno=tbl2.rowno-1
然后最终查询从中获取总和结果区别在查询3:
SELECT sum(diff) as Total_Diff
FROM Query3;
但是,如果您使用SQL Server,则可以使用此查询(查找示例sqlfiddle):
;with tbl as(
select row_number()over(order by id) as rowno,
reading
from table1
where deviceid=2 and date='20150212'
)
select sum(diff) as sum_diff
from (
select
(b.reading-a.reading) as diff
from tbl a
left join tbl b on a.rowno=b.rowno-1
) tbl_diff
您正在使用哪个DBMS? – 2015-02-12 07:22:29
两个澄清问题:1.你可以添加你想要得到的输出吗? 2.您使用的是什么RDBMS? – Mureinik 2015-02-12 07:24:20
添加一些所需的输出..你在这里想要什么? – 2015-02-12 07:24:50