Condition qui peut s'écrire
periode_depart + nb_periodes > lead(periode_depart,1) over ( partition by date_du_jour order by date_du_jour, periode_depart )
mais comme on ne peut pas mettre cela dans le where, on aura quand même un double parcours de la table...
(NB en ORACLE (≥12c) un match_recognize donne la solution en 1 seul parcours :
1 2 3 4 5 6 7 8 9
|
match_recognize (
partition by date_du_jour
order by date_du_jour, periode_depart
measures id_evenement as ide, periode_depart as pd, nb_periodes as nbp, next(id_evenement) as over_ide, next(periode_depart) as over_pd
pattern( up )
define
up as periode_depart + nb_periodes > next(periode_depart)
) |
DATE_DU_JOUR |
ID_EVENEMENT |
PERIODE_DEPART |
NB_PERIODES |
OVER_IDE |
OVER_PD |
14-JAN-19 |
4737 |
7 |
11 |
4736 |
14 |
Partager