On désire les evt A qui précèdent les evt B (sans forcément être juxtaposés) dans la table historique genre...
+---+---+--------+
|cle|evt| chrono |
+---+---+--------+
| X | A | 81 | <- lui
| X | C | 212 |
| X | B | 215 | <- lui
| X | A | 426 |
| X | A | 575 | <- lui
| X | B | 1257 | <- lui
| X | B | 2301 |
+---+---+--------+select a.cle, max(a.chrono) "evtA", b.chrono "evtB"
from historique a
, (select bb.cle, aa.chrono ref, min(bb.chrono) chrono
from historique bb, historique aa
where aa.cle = bb.cle
and aa.chrono < bb.chrono
and aa.evt = 'evtA' -- mettre ici code evt pour evtA
and bb.evt = 'evtB' -- mettre ici code evt pour evtB
group by bb.cle, aa.chrono) b
where a.cle = b.cle
and a.chrono < b.chrono
and a.evt = 'evtA'
group by a.cle, b.chrono
La sous-requête renvoie les plus proches événements A postérieurs aux événements B.
Le requête retrouve les plus proches événements B antérieurs à ceux de la sous-requête.
Aucun commentaire:
Enregistrer un commentaire