Bonjour,
J'ai le besoin suivant :
1 table avec 70 millions d' éléments, dont 2 millions de distincts.
Chaque élément a X évènements et chacun leur date.
On aura donc par exemple un élement A avec 50 évènements et chacun leur date, puis un élément B avec 25 evènements et là aussi chacun leur date etc etc.
Je souhaite pouvoir, sur une période donnée (mois), extraire tous les éléments ayant eu un évènement dans cette période.
J'aurais potentiellement des éléments en double mais c'est normal, à partir du moment ou j'ai des évènement qui comportent des dates sur la période intérrogée
Jusque là c'est simple.
Select Elément, Evènement, EvDate from Table where EvDate between 1/3 and 31/3
Mon besoin réel est que j'ai besoin de récupérer aussi l'évèmenent qui précède pour au final avoir les colonnes :
Elément A
Evènement X
EvDate 12/3
Evènement X-1
EvDate 11/3 (en fait le max <12/3 du même Element)
En fait on se fiche de la nature de l'évènement, c'est la date qui fait foi.
J'y arrive par jointures + max() mais mes tables sont très grosses donc ça rame vite si j'élargis le range à interroger.
J'y arrive aussi avec des fonctions analytiques de type LAG +PARTITION par Elément mais là aussi ça rame vite.
Mais peut être je m'y prends mal ou peut être y a t il meiux à faire, de moins gourmand ?
Merci
Laurent
Partager