Bon, là je suis perdu

Voilà ce que je souhaitais faire :

j'ai
Entité---Date---Note---Agence
A---22/11/2005---B---A1
A---17/09/2003---A---A1
A---24/04/2005---C---A2
A---29/08/2003---B---A2

et je souhaite arriver à :
A---22/11/2005---B---A1
A---22/11/2005---C---A2 (car la note d'A2 est C depuis 24/04/05)

A---17/09/2003---A---A1
A---17/09/2003---B---A2 (car la note d'A2 est B depuis 29/08/2003)


Et là je m'enfonce dans ma requête :

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  *      
FROM maTable a 
 
      LEFT JOIN (SELECT c.code_entite, 
                        c.date as date_ant, 
                        c.note as note_ant,
                        c.agence
                 FROM maTable c
                 WHERE c.date =
 
                       (SELECT max(mc.date)
                       FROM maTable mc
                       WHERE mc.date =
                           (SELECT mcb.date
                           FROM maTable mcb
                           WHERE mcb.date=mc.date)
                       AND mc.agence='MO')
                 and c.agence='MO'
                 ) b
 
                       ON a.date >= nvl(b.date_ant, '01/01/0001')
                       AND a.code_entite=b.code_entite
                       AND a.agence='SP' 
 
WHERE a.agence='SP'
qq1 aurait une idée simple ?