加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 站长百科 > 正文

oracle – 如何在条件下找到两行之间的差异

发布时间:2021-03-05 20:17:16 所属栏目:站长百科 来源:网络整理
导读:name point----------steve 207Mary 203steve 205steve 200steve 139Mary 300 我想得到条件eqn = [(第1行) – 行]的行之间的差异,其中name = steve,所以我理想地希望它是, steve 2 //207 - 0steve 5 //205 - 207steve 61 //200 - 205steve 139 //139 - 200

name      point
----------
steve     207
Mary      203
steve     205
steve     200
steve     139
Mary      300

我想得到条件eqn = [(第1行) – 行]的行之间的差异,其中name = steve,所以我理想地希望它是,

steve 2   //207 - 0
steve 5   //205 - 207
steve 61  //200 - 205
steve 139 //139 - 200

有代码可以找到连续行之间的差异.但是添加条件时它不起作用.

解决方法

编辑到期OP评论我已更改查询以完全符合您的请求.

LAG可以帮助您:

select name,coalesce( 
        point - lag( point,1,Null ) over (order by point),point)
    as diff,point || '-' ||
    LEAD( point,0 ) over (order by point) as prev_point
  from t   
  where name = 'steve'  
  order by point desc

Results:

|  NAME | DIFF | PREV_POINT |
-----------------------------
| steve |    2 |      207-0 |
| steve |    5 |    205-207 |
| steve |   61 |    200-205 |
| steve |  139 |    139-200 |

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读