sql 高手请进

wlvcd 2003-09-01 07:29:11
1.资料
table:
month total
2 30
5 90
7 50
8 80
运用sql语句实现
month total increase/Decrease
2 30 0
5 90 +60
7 50 -40
8 80 +30

请问怎么写sql语句 (存储过程受限制)



...全文
8 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
寒若辰 2003-09-02
  • 打赏
  • 举报
回复
SQL> select m1 month,v1 total,v1-v2 increase/Decrease from (
2 select m1,v1,lag(v1,1,0) over(order by m1) v2 from mm )
3 /

M1 V1 V1-V2
---------- ---------- ----------
2 30 30
5 90 60
7 50 -40
8 80 30
onejune4450 2003-09-02
  • 打赏
  • 举报
回复
1 select a.m1,a.v1,a.v1 - nvl(b.v1,a.v1) from
2 (select rownum rn,m1,v1 from mm order by m1) a,
3 (select rownum rn,m1,v1 from mm order by m1) b
4* where a.rn -1 = b.rn(+)
SQL> /

M1 V1 A.V1-NVL(B.V1,A.V1)
---------- ---------- -------------------
2 30 0
5 90 60
7 50 -40
8 80 30
onejune4450 2003-09-01
  • 打赏
  • 举报
回复
SQL> select m1,v1,v1-v2 from (
2 select m1,v1,lag(v1,1,v1) over(order by m1) v2 from mm );

M1 V1 V1-V2
---------- ---------- ----------
2 30 0
5 90 60
7 50 -40
8 80 30
onejune4450 2003-09-01
  • 打赏
  • 举报
回复
SQL> select * from mm;

M1 V1
---------- ----------
2 30
5 90
7 50
8 80

SQL> select m1,v1,v1-v2 from (
2 select m1,v1,lag(v1,1,0) over(order by m1) v2 from mm )
3 /

M1 V1 V1-V2
---------- ---------- ----------
2 30 30
5 90 60
7 50 -40
8 80 30

3,491

社区成员

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

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