Bonjour,

Le code ci-dessous est fonctionnel à un petit problème près. Pour deux valeurs de COD_CMP ( 963 et 955 ) de la table COMPOSANTE ( C ), les valeurs ne sont pas celles à retournés. Il faut en effet récupérer la bonne valeur dans INTER_GROUP_COMPOSANTE ( G ) en passant par la table GROUPE_DIPLOME (D ).
L'idée générale serait :

IF D.COD_CMP = 963 ( ou 955 )
THEN COD_CMP := G.COD_CMP WHERE D.CODE_GROUPE = G.CODE_GROUPE

J'ai donc pensé à utilisé un case comme cela dans le WHERE de ma requête:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
     case c.cod_cmp
           when c.cod_cmp = '963' then cod_cmp := code_composante where D.cod_gdi= G.code_groupe 
           when c.cod_cmp = '955' then cod_cmp := code_composante where D.cod_gdi= G.code_groupe 
     end
Mais cela ne fonctionne pas.

Voici le code SQL :

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
SELECT  C.COD_CMP, LIB_CMP,
            COD_ETU, LIB_NOM_PAT_IND, LIB_PR1_IND,
            DECODE(A.COD_RGI,'1','FI','2','FC','3','FI','4','ST','5','AL','6','AP','7','FC',' ')
 
FROM    INDIVIDU I, INS_ADM_ETP E, 
           INS_ADM_ANU A, ETAPE T, 
           COMPOSANTE C, GROUPE_DIPLOME D, INTER_GROUP_COMPOSANTE G
 
WHERE      E.COD_ANU = '2014'
               and A.COD_ANU = '2014'
               and T.COD_ETP = E.COD_ETP and T.cod_cyc='3'
               and E.COD_CMP not in ('802','970','980','985')
               and E.TEM_IAE_PRM = 'O'
               and E.ETA_IAE = 'E'
               and E.ETA_PMT_IAE = 'P'
               and I.COD_IND = E.COD_IND
               and  C.COD_CMP =  decode(E.COD_CMP,'931','904','961','901','962','903','959','902',E.cod_cmp)
               and TEM_EN_SVE_CMP = 'O'
               and (E.cod_etp not like 'DO%')
               and E.cod_etp<>'DAEU'
               and E.cod_ind=A.cod_ind
 
order by  cod_cmp, LIB_NOM_PAT_IND, LIB_PR1_IND

Ceci est dans la cadre de la requête d'un report sous Oracle Reports Builder.
Merci d'avance pour votre aide!