Bonjour,
Je suis nouveau en SQL et sur ce forum.
J'ai un problème bien spécifique que je n'arrive pas à résoudre avec mon modeste niveau de débutant.
J'ai une BDD dans laquelle j'ai des enregistrements qui sont liés entre eux mais noyés au milieu d'autres événements.
Ces enregistrements liés, j'aimerai les regroupés 2 à 2 car ils correspondent à l'apparition et disparition d'un événement. J'ai dans une colonne l'info d'apparition ou de disparition. Je souhaite connaître pour chaque événement le tps qu'il a durée, le tps max, min, la moyenne, l'écart type: bref faire des stats.
J'arrive bien à filtrer mes données et détecter les différents enregistrements. Par contre je n'arrive pas à former les couples correctement car ma requête me donne pour plusieurs enregistrements d'apparition le même enregistrement de disparition. En clair je n'arrive pas à balayer la table pour dire que l'enregistrement de disparition est le premier trouvé avant l'enregistrement d'apparition. Avant car les enregistrements sont inversés dans ma BDD.
Merci par avance de votre aide.
Ci-dessous ma requête (format ACCESS):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 SELECT a.Module, a.Parameter, (a.ID<b.ID) AS VerifOrder, a.[Date] & " " & a.State & " ~ a:" & a.Champ1 AS TpsNewAlm, b.[Date] & " " & b.State & " ~ b:" & b.Champ1 AS TpsInactAlm, DateTimeEntreDeuxEnregistrements(a.[Date],b.[Date]) AS TpsAlm FROM a LEFT JOIN a AS b ON (a.Parameter=b.Parameter) AND (a.Module=b.Module) WHERE ((a.State) Like 'EventApparition*') AND (a.ID>b.ID) AND ( SELECT TOP 1 b.State FROM a WHERE ((b.State) Like 'EventDisparition*') AND ((a.State) Like 'EventApparition*') AND (a.ID>b.ID) ) ORDER BY a.Module;
Partager