【问题标题】:In Db2 how to calculate difference of adjacent rows在 Db2 中如何计算相邻行的差异
【发布时间】:2012-01-29 13:03:13
【问题描述】:

我想将范围计算为row1-row2,需要db2查询中的帮助来获取范围列

name,age,range   
a,40,0     
b,20,20  
c,7,13  
d,5,2  
e,1,4  

范围列计算

first value is 0  
(40-20)  
(20-7)  
(7-5)  
(5-1)  

【问题讨论】:

  • 另请参阅此问题:Optimizing ROW_NUMBER() in SQL Server,了解实现相同结果的各种其他方法。
  • @ypercube:我认为该帖子与此处无关,因为它涉及使用窗口函数的值连接结果集。此外:性能是非常具体的实现。
  • @a_horse_with_no_name:我同意性能是特定于实现的。但是,如果没有 lag() 函数,您确实需要使用 Row_Number() 窗口函数(或其他一些自联接方式)进行自联接。
  • @ypercube:我同意。但是 DB2 确实有 lag() 函数 :)
  • 我同意,对于具有该功能的版本,这是最好的方法。

标签: sql db2


【解决方案1】:
SELECT name, 
       age,
       (lag(age, 1, age) over (order by age desc)) - age as agediff
FROM your_table
ORDER BY age desc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多