p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Membre actif
    Homme Profil pro
    Chef de projet IT
    Inscrit en
    mars 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Pologne

    Informations professionnelles :
    Activité : Chef de projet IT
    Secteur : Distribution

    Informations forums :
    Inscription : mars 2009
    Messages : 174
    Points : 166
    Points
    166

    Par défaut Rajouter des 0 en début en fonction du nombre de caractères du champ

    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.

  2. #2
    Expert Confirmé Sénior
    Inscrit en
    août 2008
    Messages
    2 316
    Détails du profil
    Informations forums :
    Inscription : août 2008
    Messages : 2 316
    Points : 4 327
    Points
    4 327

    Par défaut

    Pas besoin de se prendre la tête LDAP gère la taille automatiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL> select lpad(12546,9,0) from dual;
     
    LPAD(1254
    ---------
    000012546

  3. #3
    Membre actif
    Homme Profil pro
    Chef de projet IT
    Inscrit en
    mars 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Pologne

    Informations professionnelles :
    Activité : Chef de projet IT
    Secteur : Distribution

    Informations forums :
    Inscription : mars 2009
    Messages : 174
    Points : 166
    Points
    166

    Par défaut

    Merci pour cette reponse. Je vais l'utiliser pour simplifier ma requete.

    J'ai trouve pourquoi j'avais un probleme : le end avant la parenthese de fermeture n'etait pas present.

    Merci.

    Cdlt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. onkeyup : rajouter des fonctions
    Par skyser dans le forum JavaScript
    Réponses: 22
    Dernier message: 13/04/2012, 08h19
  2. Réponses: 3
    Dernier message: 22/02/2012, 10h45
  3. Réponses: 3
    Dernier message: 23/12/2009, 20h11
  4. Réponses: 2
    Dernier message: 28/07/2009, 16h41
  5. fonction Average dans un tableau ou on rajoute des colonnes
    Par Huubb dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/09/2006, 17h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo