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!






Répondre avec citation


N'oubliez pas le bouton
et pensez aux balises [code]

Partager