Retourner une valeur par défaut même si inexistante en base
Bonjour, j'ai une requête sql qui me retourne une valeur CHAR_VAL.
j'aimerais que cette requête me retourne une valeur par défaut si la requête ne retourne rien. Je dois impérativement récupérer la valeur de CHAR_VAL dans une variable dans la suite de mon traitement.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| SELECT ACCH2.CHAR_VAL
FROM CI_ACCT_CHAR ACCH1, CI_ACCT_CHAR ACCH2
WHERE ACCH1.ACCT_ID = '5952073892'
AND ACCH1.CHAR_TYPE_CD = 'NUMGRC'
AND (ACCH1.ADHOC_CHAR_VAL) = '2-2BCCSCO'
AND ACCH1.EFFDT = (SELECT MAX(ACCH3.EFFDT)
FROM CI_ACCT_CHAR ACCH3
WHERE ACCH3.ACCT_ID = ACCH1.ACCT_ID
AND ACCH3.CHAR_TYPE_CD = ACCH1.CHAR_TYPE_CD
AND ACCH3.EFFDT <= '16-03-2016')
AND ACCH2.ACCT_ID = '5952073892'
AND ACCH2.CHAR_TYPE_CD = 'TYP-PROF'
AND ACCH2.CHAR_VAL IN ('OH ', 'S ET C ')
AND ACCH2.EFFDT = (SELECT MAX(ACCH4.EFFDT)
FROM CI_ACCT_CHAR ACCH4
WHERE ACCH4.ACCT_ID = ACCH2.ACCT_ID
AND ACCH4.CHAR_TYPE_CD = ACCH2.CHAR_TYPE_CD
AND ACCH4.EFFDT <= '16-03-2016'); |
J'ai modifié la requête comme ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| SELECT ACCH2.CHAR_VAL
FROM CI_ACCT_CHAR ACCH1, CI_ACCT_CHAR ACCH2
WHERE CCH1.ACCT_ID = '5952073892'
AND ACCH1.CHAR_TYPE_CD = 'NUMGRC'
AND (ACCH1.ADHOC_CHAR_VAL) = '2-2BCCSCO'
AND ACCH1.EFFDT = (SELECT MAX(ACCH3.EFFDT)
FROM CI_ACCT_CHAR ACCH3
WHERE ACCH3.ACCT_ID = ACCH1.ACCT_ID
AND ACCH3.CHAR_TYPE_CD = ACCH1.CHAR_TYPE_CD
AND ACCH3.EFFDT <= '16-03-2016')
AND ACCH2.ACCT_ID(+) = ACCH1.ACCT_ID
AND ACCH2.CHAR_TYPE_CD(+) = 'PROF'
AND ACCH2.CHAR_VAL(+) IN ('OH ', 'S ET C ')
AND (ACCH2.EFFDT(+) <> ' '
AND ACCH2.EFFDT = (
SELECT MAX(ACCH4.EFFDT)
FROM CI_ACCT_CHAR ACCH4
WHERE ACCH4.ACCT_ID = ACCH2.ACCT_ID(+)
AND ACCH4.CHAR_TYPE_CD = ACCH2.CHAR_TYPE_CD(+)
AND ACCH4.EFFDT <= '16-03-2016')
); |
j'ai une erreur ORA-01705: impossible d'indiquer une jointure externe sur une colonne de corrélation
Je suis un peu bloqué pour l'instant. Comment faire ?
Merci d'avance