Bonjour,

J'ai une table avec nos codes grades, il est possible dans ma base source (oracle) d'avoir deux lignes avec le même code grade mais avec des dates de début, fin et maj différentes. Or avec ma requête actuelle soit j'ai des doublons soit j'ai plus de doublon mais il me manque des code grades.
Voici la 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
27
28
29
30
31
select  A.code_grade, 
        A.date_debut, 
        A.date_fin,
        A.date_maj
from (select grades as code_grade, 
      to_char(tgd.tdatdeb, 'DD/MM/YYYY') as date_debut, 
        to_char(tgd.tdatfin, 'DD/MM/YYYY') as date_fin, 
        to_char(tgd.tdatmaj, 'DD/MM/YYYY') as DATE_MAJ
from tgd 
where tgd.coddif = '00'
and grades in ('V417','2A01','F163')
union ALL
select tgd1.grades as code_grade, 
        to_char(tgd1.tdatdeb, 'DD/MM/YYYY') as date_debut, 
        to_char(tgd1.tdatfin, 'DD/MM/YYYY') as date_fin, 
        to_char(tgd1.tdatmaj, 'DD/MM/YYYY') as DATE_MAJ
from tgd tgd1
where tgd1.coddif = '10'
and tgd1.codhop = '061'
and tgd1.grades in ('V417','2A01','F163')
) A
join (select  grades as code_grade, 
              max(tdatfin) datefin
              max(tdatmaj) tdatmaj
      from tgd
      group by grades) B
on A.code_grade=B.code_grade
--and A.date_fin=B.datefin
--and A.date_maj=B.tdatmaj
 
order by code_grade
Voici le résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
VF163	12/11/1999	31/12/3000	01/01/2001
F163	07/09/1983	11/11/1999	01/01/2001
V417	01/01/2013	31/12/3000	13/08/2020
V417	01/01/2013	31/12/3000	13/09/2013
2A01	01/12/2010	31/12/2019	02/10/2020
2A01	01/12/2010	31/12/3000	11/10/2016
Lorsque je fais le filtre sur A.date_fin=B.datefin, voici le résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
F163	12/11/1999	31/12/3000	01/01/2001
V417	01/01/2013	31/12/3000	13/08/2020
V417	01/01/2013	31/12/3000	13/09/2013
2A01	01/12/2010	31/12/3000	11/10/2016
Lorsque je fais le filtre sur A.date_maj=B.tdatmaj, voici le résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
F163	07/09/1983	11/11/1999	01/01/2001
F163	12/11/1999	31/12/3000	01/01/2001
V417	01/01/2013	31/12/3000	13/08/2020
2A01	01/12/2010	31/12/2019	02/10/2020
Lorsque j'effectue les deux filtres, voici le résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
F163	12/11/1999	31/12/3000	01/01/2001
V417	01/01/2013	31/12/3000	13/08/2020
Si vous avez des idées, je tourne en rond ...