sql 同一张表 取同一字段时间最相近 两条数据 做运算

时间:2023-02-02 15:13:31
表结构如下

名称      代码    注释              数据类型 
id       id    记录流水号      int 
paraid       paraid    唯一标识           Varchar(20)
paravalue    paravalue    遥测参数值      float8 
collecttime  collecttime  采集时间      datetime 
systemtime   systemtime   入库时间      datetime

查询出 距最新采集时间最近的 一条数据 同它 遥测参数差值

4 个解决方案

#1



select top(2)* from tb a, tb b where a.paraid <> b.paraid 
order by abs(datediff(ss,a.collecttime,b.collecttime))

#2


select top 1 t1.float8 -t.float8  
from tb t, (select top 1 * from tb order by systemtime  desc) t1
where t.id<>t1.id
order by systemtime  desc

#3


用abs(datediff(ss,a.collecttime,b.collecttime))会比较好一点

#4


如果使用t-sql的话,我就创建临时表

select top 2 遥测参数
into #temp
from table
order by 采集日期 desc

declare @s float8
select @s=@s-遥测参数
from #temp

sql server里没有float8 类型,是使用的oracle数据库吗?

#1



select top(2)* from tb a, tb b where a.paraid <> b.paraid 
order by abs(datediff(ss,a.collecttime,b.collecttime))

#2


select top 1 t1.float8 -t.float8  
from tb t, (select top 1 * from tb order by systemtime  desc) t1
where t.id<>t1.id
order by systemtime  desc

#3


用abs(datediff(ss,a.collecttime,b.collecttime))会比较好一点

#4


如果使用t-sql的话,我就创建临时表

select top 2 遥测参数
into #temp
from table
order by 采集日期 desc

declare @s float8
select @s=@s-遥测参数
from #temp

sql server里没有float8 类型,是使用的oracle数据库吗?