2009-11-06 8 views
0

J'ai une table qui est comme çaComment comparer des lignes dans une table Oracle?

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

Je suis en train d'identifier les lignes précédentes classent numéro dans une instruction Oracle. Toute aide est grandement appréciée. J'ai cherché sur Internet et n'ai pas trouvé beaucoup.

Répondre

2

Vous devez avoir une autre colonne qui établit l'ordre des lignes avec le même rang, sinon le concept de « rang précédent » n'a pas de sens. Supposons que vous faites:

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

Non, vous pouvez utiliser une fonction analytique:

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 
1
select 
    ... 
lag(rank, 1) over (order by ordering-columns) 
from 
    .. 
Questions connexes