如何用sql语句 取某字段的前一条数据和后一条数据之间的差值?

2024-12-14 06:25:11
推荐回答(3个)
回答1:

很简单呀,可以看看datediff数据库时间函数
select
id,datediff(day,时间列名,getdate())
from
表明
意思是返回
对应行的,行编号和
时间差值,这条sql语句的返回形式有不同的样式,可以使毫秒微妙等等,你可以根据你的需求去填写,上面的是返回
当前时间与时间列相差的
天数

回答2:

declare @table table(
id int,
date datetime,
data3 int,
data3_Difference int
)
insert into
@table(id,date,data3)
(
select id,date,data3 from 表
)
declare @id int,@front int
update @table
set
@id=id,
data3_Difference=date3-isnull((
select date3
from @table
where id=@id-1
),0)
select id,date,data3_Difference from @table
上面那个高手,不过不能适合于所有情况.呵呵. 厉害.我没有想到还有自连接 id-1 这个关系.... 学到了这个后...我想以后求差值会快很多

declare @table table(
index int identity(1,1),
id int,
date datetime,
data3 int
)
insert into
@table(id,date,data3)
(
select id,date,data3 from 表
order by data3
)

select
a.ID,a,Date,
a.Data3-isnull(b.Data3,0) as data3_Difference
from
@table a
left join
@table b
on b.index=a.index-1
这个是最新答案.只与那一列有关系

回答3:

假定表名:#tmp
select a.ID,a,Date,a.Data3-isnull(b.Data3,0) from
#tmp a left join #tmp b
on b.ID=a.ID-1