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 :
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
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.
Peut être faudrait il écrire une procédure en PL/SQL, malheureusement, je n'y connais rien.

Merci d'avance