Bonjour,

J'ai une requête Oracle de la forme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
select DER.GC_ID, GC1.GC_NAME DESC1, GC_ID_DER, GC2.GC_NAME DESC2 
from DER_DEROGATION DER, GENERIC_COMPONENT_GC GC1, GENERIC_COMPONENT_GC GC2
where  GC1.GC_ID (+) = DECODE(LENGth(DER.GC_ID), 15, substr(DER.GC_ID,1,9) || substr(DER.GC_ID,14,15),
DECODE(substr(DER.GC_ID,1,1), 'A', substr(DER.GC_ID,1,11), substr(DER.GC_ID,1,8)))
AND GC2.GC_ID (+) = DECODE(LENGth(DER.GC_ID_DER), 15, substr(DER.GC_ID_DER,1,9) || substr(DER.GC_ID_DER,14,15),
DECODE(substr(DER.GC_ID_DER,1,1), 'A', substr(DER.GC_ID_DER,1,11), substr(DER.GC_ID_DER,1,8)))
AND DER.OF_ID = %s
AND DER.OF_INDICE = %s  ;
Il faut que je la passe en PostgreSQL.

Je sais qu'il faut changer les DECODE en CASE WHEN et les (+) en LEFT OUTER JOIN ... ON
Mais je ne sais pas faire les 2 changements en même temps.
Par exemple le 1er (+) n'appelle pas de table apres.

ca me donne ca :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
select DER.GC_ID, GC1.GC_NAME DESC1, GC_ID_DER, GC2.GC_NAME DESC2 
from DER_DEROGATION DER, GENERIC_COMPONENT_GC GC1, GENERIC_COMPONENT_GC GC2
where  GC1.GC_ID LEFT OUTER JOIN ON CASE WHEN LENGth(DER.GC_ID)=15 THEN substr(DER.GC_ID,1,9) || substr(DER.GC_ID,14,15)
WHEN substr(DER.GC_ID,1,1)='A' THEN substr(DER.GC_ID,1,11)
 ELSE substr(DER.GC_ID,1,8)
END
AND GC2.GC_ID LEFT OUTER JOIN ON CASE WHEN LENGth(DER.GC_ID_DER)=15 THEN substr(DER.GC_ID_DER,1,9) || substr(DER.GC_ID_DER,14,15)
 WHEN substr(DER.GC_ID_DER,1,1)='A' THEN substr(DER.GC_ID_DER,1,11)
ELSE substr(DER.GC_ID_DER,1,8)
END
AND DER.OF_ID = %s
AND DER.OF_INDICE = %s  ;
Ca vous parait bon ?
Pouvez-vous m'aider ?

Merci d'avance,
Bonne journée
Meloo