Bonjour,
j'ai une table TABLE avec les champs id1, id2, date, etat
id1 est la clé
Pour un même id2, j'ai plusieurs états possibles et à chaque état correspond une date
Exemple :
id1 id2 date etat
1 10 08/10/2001 A
2 10 08/10/2000 B
3 20 08/10/2008 B
Pour chaque id2, je dois récupérer id1 pour les 2 états A et B uniquement dans le cas où date (A) > date (B)
Voici ma requête, le soucis, c'est qu'elle ne me renvoi aucun résultat :
Je ne suis pas très calée en sql et encore moins en Oracle donc si vous aviez des idées, cela m'interesserait beaucoup.
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
23
24
25
26 SELECT t1.id1 FROM TABLE t, ( SELECT max( t.date ) AS date1, t.id1 FROM TABLE t WHERE t.etat = 'A') t1, ( SELECT max( t.date ) AS date2, t.id1 FROM TABLE t WHERE t.etat = 'B') t2, ( SELECT em.aff_id, t.id1 FROM TABLE t WHERE em.etat = 'A') t3, ( SELECT t.id2, t.id1 FROM TABLE t WHERE t.etat = 'B') t4 WHERE t1.id1 = t1.id1 AND t1.id1 = t2.id1 AND t1.id1 = t3.id1 AND t1.id1 = t4.id1 AND t3.id2 = t4.id2 AND t1.date1 > t2.date2
Peut être faudrait il écrire une procédure en PL/SQL, malheureusement, je n'y connais rien.
Merci d'avance







Répondre avec citation











Partager