代码之家  ›  专栏  ›  技术社区  ›  sleath

如何比较Oracle表中的行?

  •  0
  • sleath  · 技术社区  · 15 年前

    我有一张像这样的桌子

    rank continuationofrow
    1    row 
    2    row 
    3    row 
    4    row 
    4    row  
    4    row 
    

    我试图在Oracle语句中标识前面的行排名号。非常感谢您的帮助。我在网上搜索过,没有找到多少。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Tony Andrews    15 年前

    您必须有另一列来建立具有相同排名的行的顺序,否则,“前一行”的概念是没有意义的。假设您这样做:

    seq rank continuationofrow
    1   1    row 
    2   2    row 
    3   3    row 
    4   4    row 
    5   4    row  
    6   4    row
    

    不,您可以使用分析函数:

    select seq, rank, continuationofrow, lag(rank) over (order by seq) as prev_rank
    from mytable;
    
    
    seq rank continuationofrow prev_rank
    1   1    row  
    2   2    row               1
    3   3    row               2
    4   4    row               3
    5   4    row               4
    6   4    row               4
    
        2
  •  1
  •   René Nyffenegger    15 年前
    select
      ...
     lag(rank, 1) over (order by ordering-columns)
    from
      ..