Bonjour.

Je cherche, par requete sql, a cadrer entre un nr dans le module factures d'Oracle Financial et le nr equivalent dans le module comptabilite genererale d'Oracle Financial.

Cote AP (module factures), le champ contient des 0 de facon a arriver a 9 caracteres. Dans le module GL (comptabilite generale), le champ contient uniquement le nr.

Par exemple dans AP j'ai 000012546 et dans GL j'ai 12546

De temps a autre, le champ a ete mal alimente et contient des caracteres non numeriques. Exemple 12546. ou une date au lieu du nr

Je cherche a faire apparaitre les ecarts montants (ou l'absence du nr cote GL) entre AP et GL.

J'ai deux solutions pour le faire :

1) to_number sur chaque champ (cote AP et cote GL) : si le champ contient un caractere non numerique, la requete tombe en erreur

2) rajouter des 0 dans le champ cote GL.

Pour faire ce point 2), j'ai, dans le select, rajoute la chose suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
select
......
(case length(gl.ATTRIBUTE14) when 1 then lpad(gl.ATTRIBUTE14,0,8) when 2 then lpad(gl.ATTRIBUTE14,0,7) when 3 
then lpad(gl.ATTRIBUTE14,0,6) when 4 then lpad(gl.ATTRIBUTE14,0,5) 
when 5 then lpad(gl.ATTRIBUTE14,0,4) when 6 then lpad(gl.ATTRIBUTE14,0,3)  
when 7 then lpad(gl.ATTRIBUTE14,0,2) when 8 then lpad(gl.ATTRIBUTE14,0,1) else gl.ATTRIBUTE14)
from
 
where
J'avais aussi essaye :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 
select
......
(case gl.ATTRIBUTE14 when length(gl.ATTRIBUTE14) = 1 then lpad(gl.ATTRIBUTE14,0,8) when length(gl.ATTRIBUTE14) = 2 then lpad(gl.ATTRIBUTE14,0,7) when length(gl.ATTRIBUTE14) = 3 
then lpad(gl.ATTRIBUTE14,0,6) when length(gl.ATTRIBUTE14)=4 then lpad(gl.ATTRIBUTE14,0,5) 
when length(gl.ATTRIBUTE14)=5 then lpad(gl.ATTRIBUTE14,0,4) when length(gl.ATTRIBUTE14)=6 then lpad(gl.ATTRIBUTE14,0,3)  
when length(gl.ATTRIBUTE14)=7 then lpad(gl.ATTRIBUTE14,0,2) when length(gl.ATTRIBUTE14)=8 then lpad(gl.ATTRIBUTE14,0,1) else gl.ATTRIBUTE14)
from
 
where
Apres avoir fait differents essais dans Toad qui m'a annonce un "missing keyword", j'ai essaye la chose suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
select
------
(case length(gl.ATTRIBUTE14) when 1 then lpad(gl.ATTRIBUTE14,0,8) when 2 then lpad(gl.ATTRIBUTE14,0,7) when 3 
then lpad(gl.ATTRIBUTE14,0,6) when 4 then lpad(gl.ATTRIBUTE14,0,5) 
when 5 then lpad(gl.ATTRIBUTE14,0,4) when 6 then lpad(gl.ATTRIBUTE14,0,3)  
when 7 then lpad(gl.ATTRIBUTE14,0,2) when 8 then lpad(gl.ATTRIBUTE14,0,1) else lpad(gl.ATTRIBUTE14,0,0))
from
 
where
J'ai encore le message "Missing keyword".

Comment puis-je resoudre mon probleme et rajouter des 0 pour que le champ nr dans GL ait le meme format que celui dans AP et, ainsi, cadrer ?

Merci.
Cdlt.