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:
Mais cela ne fonctionne pas.
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
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!
Partager