oracle数据库slq递减求助

ZuoChengKeJiYunXua 2016-09-23 09:42:05

红色是需要达到的 效果 递减
...全文
502 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mayanzs 2016-09-23
  • 打赏
  • 举报
回复
with t as( select 1 id,2380 as c1,2000 as c2 from dual union all select 2 id,2380 as c1,600 as c2 from dual union all select 3 id,2380 as c1,600 as c2 from dual ) select t.*,c1-sum(c2) over(order by id rows between unbounded preceding and current row) ss from t;
ghx287524027 2016-09-23
  • 打赏
  • 举报
回复
with t as(
select 2380 as c1,2000 as c2 from dual union all
select 2380 as c1,600 as c2 from dual union all
select 2380 as c1,600 as c2 from dual 
)
select c1,c2,case when lag(c3)over(order by rn) is null then c3 else lag(c3)over(order by rn)||'-'||c2 end c4
from (select c1,c2,c1||'-'||c2 c3,rownum rn from t)
卖水果的net 2016-09-23
  • 打赏
  • 举报
回复


SQL> create table test(id int, num int, num2 int);
Table created
SQL> begin
  2      insert into test values(1,2380,2000);
  3      insert into test values(2,2380,600);
  4      insert into test values(3,2380,600);
  5  end;
  6  /
PL/SQL procedure successfully completed
SQL> select id, num, num2, num - sum(num2) over(order by id) result from test ;
        ID        NUM       NUM2     RESULT
---------- ---------- ---------- ----------
         1       2380       2000        380
         2       2380        600       -220
         3       2380        600       -820
SQL> drop table test purge ;
Table dropped

SQL> 

17,090

社区成员

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

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