SQL交错相减

本文介绍了一种使用SQL查询TableInfo表的技巧,通过联接自身表并利用ROW_NUMBER()函数按ID降序排列来获取每条记录及其下一条记录的val值差。此方法适用于需要比较时间序列数据的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TableInfo表中有ID,time,val 3个字段,


现需要按时间倒叙 展示以下4个字段  时间,当前val值,下一条val值,二者差值。


declare @PageSize int=10,@PageIndex int=1
select * from (
select top 1000 ROW_NUMBER() over(order by newTable.ID desc) as mn,newTable.rn,newTable.id,newTable.time,newTable.val,oldTable.val as preVal,CONVERT(money,newTable.val)-CONVERT(money, oldTable.val) as Amplitude from (select top 1000 ROW_NUMBER() over(order by ID) as rn, id,time,val from TableInfo order by id desc) as newTable,(select top 1000 ROW_NUMBER() over(order by ID) as rn, id,time,val from TableInfo order by id desc) as oldTable where newTable.rn=oldTable.rn+1
) as mmt
where mmt.mn between @PageSize*(@PageIndex-1)+1 and @PageSize*@PageIndex  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值