2009-09-06 4 views
2

J'ai besoin de la différence entre deux dates dans Oracle en termes de jours où les dates étaient dans la même colonne. Autrement dit, la différence entre deux dates après l'ordre par cette colonne. C'est-à-dire, après avoir fait l'ordre par, j'ai besoin de la différence entre les deux premières dates.Comment obtenir les différences entre deux dates dans Oracle qui étaient dans la même colonne?

+0

Espérons qu'il y ait une certaine façon de faire spécifiques à Oracle, sinon vous êtes dans un autojointure « agréable » ... – derobert

+0

J'utilise plus (fonction analytique). Est-ce qu'il y a un autre moyen? – gayathri

+0

Les fonctions analytiques lag ou lead sont le meilleur moyen de résoudre ce problème. Une solution d'auto-jointure est plus lente. – tuinstoel

Répondre

11

Vous pouvez utiliser les fonctions analytiques LEAD/LAG OVER.

Peut-être quelque chose comme:

SELECT 
    TheDate CurrentDate, 
    LAG(TheDate, 1, 0) OVER (ORDER BY TheDate) PriorDate, 
    TheDate - LAG(TheDate, 1, 0) OVER (ORDER BY TheDate) Difference 
FROM SomeTable 
Questions connexes