Bonjour,
J'ai une requête Oracle de la forme :
Il faut que je la passe en PostgreSQL.
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 ;
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 :
Ca vous parait bon ?
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 ;
Pouvez-vous m'aider ?
Merci d'avance,
Bonne journée
Meloo
Partager