查寻问题select...

renrjs 2009-04-30 03:52:24
表1
name( char)
a(ingeter)
b(ingeter)
select* from 表1
结果是
name a b
ww 5 0
ww 0 9
ww 3 2

我现在想要这样的结果应该怎么写?
name a b c
ww 5 0 -5
ww 0 9 4
ww 3 2 3

c的结果是b-a+c(上一个c)

来源: http://www.programbbs.com/bbs/view26-19472-1.htm
...全文
53 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
moqingcn 2009-04-30
  • 打赏
  • 举报
回复
其实你应该先推导一下c和a,b之间的关系;
c1=b1-a1+0;
c2=b2-a2+c1=(b2+b1)-(a2+a1)
.
.
.
cn=(bn+...+b1)-(an+...+a1)

之后再去用over,就很清楚了;
语句是这样的:
select name,
a,
b,
(SUM(b) OVER(PARTITION BY name ORDER BY name, rownum RANGE UNBOUNDED PRECEDING)
-
SUM(a) OVER(PARTITION BY name ORDER BY name,
rownum RANGE UNBOUNDED PRECEDING)) c
from 表1;
welyngj 2009-04-30
  • 打赏
  • 举报
回复
写pl/sql吧。。。
用cursor一条条的读出来,然后处理。
superhsj 2009-04-30
  • 打赏
  • 举报
回复
select name,a,b,sum(b-a) over(order by 按什么排序?RANGE UNBOUNDED PRECEDING) c from table1

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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