SQL语句如何写?

amami 2014-07-15 08:56:21
纪录历史数据单表,有写入时间及状态字段。
仅想取出状态变化瞬间的纪录值,(数值为0,1)在sql server里面有下面这种写法,不知道ORACLE如何写!




查询取得数据中当前记录与最近一条记录的差值
2010-07-06 10:55zhaopeng_w | 分类:网站使用 | 浏览869次
填写时间 分类 数值 变化量
20100704 A 21 21--这里是第一条记录所以变化值不要求
20100705 A 17 -4
20100706 A 20 3
20100704 B 88 88--这里是第一条记录所以变化值不要求
20100705 B 80 -8
20100706 B 99 19
上面的表中最后一个字段“变化量”是查询出来的,它是根据当前记录所在分类的数值 减去 相同分类中时间最近的上一次记录的数值。
数据库采用的是 sql server 2005
分享到:
2010-07-06 11:15 提问者采纳
select t1.*,t1.数值-isnull((select top 1 t2.数值 from 表名 t2 where t2.分类=t1.分类 and t2.填写时间<t1.填写时间 order by 填写时间 desc),0) as 变化量
from 表名 t1
...全文
92 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
amami 2014-07-15
  • 打赏
  • 举报
回复
嗯,是我要想的结果,多谢了,结贴。
小灰狼W 2014-07-15
  • 打赏
  • 举报
回复
select t1.*,t1.数值-lag(数值)over(partition by 分类 order by 填写时间) as 变化量 from 表名 t1

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧