求SQL语句,计算出每条记录之间的差值

ylczy 2006-09-11 08:31:28
要求根据每条记录的实际值,计算该条记录与前一条记录的差额生成该条记录的计算列,示列如下:

34
32
33
40
50
20
生成:
34 0
32 -2
33 1
40 7
50 10
20 -30
...全文
816 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wiler 2006-09-11
  • 打赏
  • 举报
回复
xiaoxiao1984(笨猫儿^_^) 好
我这里排队打饭的也很多,:)
xiaoxiao1984 2006-09-11
  • 打赏
  • 举报
回复
吃饭回来,打饭的队伍那叫一个长啊
xiaoxiao1984 2006-09-11
  • 打赏
  • 举报
回复
SQL> select id,decode(rownum, 1,0,id-lag(id,1,0)over(order by 1) ) from tt1;

ID DECODE(ROWNUM,1,0,ID-LAG(ID,1,
---------- ------------------------------
34 0
32 -2
33 1
40 7
50 10
20 -30

6 rows selected
vingo2000 2006-09-11
  • 打赏
  • 举报
回复
四楼用的是分析函数,有别的方法吗?
wiler 2006-09-11
  • 打赏
  • 举报
回复
那还是用我的吧,呵呵
with
new_tab as (
select rid,value
from (
select rownum rid,value
from tab_a
)
)
select value,(nvl(b.value,a.value)-a.value) dif_value
from new_tab a,new_tab b
where a.rid=b.rid(+)-1
ylczy 2006-09-11
  • 打赏
  • 举报
回复
哦, xiaoxiao1984(笨猫儿^_^) 测试物理表可行,
我又遇到新问题,因为需要从视图中取数,所以应用ROWID不成功。 有解决办法吗?
wiler 2006-09-11
  • 打赏
  • 举报
回复
我的版本是9i
我脚本的意思是:
用with 子句生成tab
然后利用内连接查询数据

xiaoxiao1984(笨猫儿^_^) 的办法不错,:)
ylczy 2006-09-11
  • 打赏
  • 举报
回复
to wiler(@_@)
没明白,select value,(nvl(b.value,a.value)-a.value) dif_value
from tab a,tab b
where a.rid=b.rid(+)-1

这里的tab a, tab b 是用
select rid,value
from (
select rownum rid,value
from tab_a
)
生成的同一个表格吗?还是其他什么
xiaoxiao1984 2006-09-11
  • 打赏
  • 举报
回复

SQL> select id,decode(rownum, 1,0,id-lag(id,1,0)over(order by rowid) ) from tt1;

ID DECODE(ROWNUM,1,0,ID-LAG(ID,1,
---------- ------------------------------
34 0
32 -2
33 1
40 7
50 10
20 -30

6 rows selected
wiler 2006-09-11
  • 打赏
  • 举报
回复
with
tab as (
select rid,value
from (
select rownum rid,value
from tab_a
)
)
select value,(nvl(b.value,a.value)-a.value) dif_value
from tab a,tab b
where a.rid=b.rid(+)-1
ylczy 2006-09-11
  • 打赏
  • 举报
回复
后一个表需要通过一个SQL语句查询前表生成的
hbboy 2006-09-11
  • 打赏
  • 举报
回复
是不是用个自动增量,然后两个表进行关联就可以了?
sten 2006-09-11
  • 打赏
  • 举报
回复
学习

17,378

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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