IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Utilisation de la fonction DECODE


Sujet :

SQL Oracle

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Utilisation de la fonction DECODE
    Bonjour,

    J'ai une table qui contient les deux colonnes : "OPERATEUR" qui peut contenir soit '+' soit '-', et "MONTANT" qui contient un entier positif.

    Exemple :


    OPERATEUR MONTANT
    + 6
    - 2
    + 4



    Je veux construire une requête qui retourne la valeur de 6 - 2 + 4 EN UTILISANT DECODE.

    Est ce que cette requête est correcte ? (Je n'ai pas actuellement Oracle pour tester) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select Sum(  DECODE(OPERATEUR, '+', MONTANT, -1 * MONTANT)   ).
    Merci pour votre aide.

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Oui, -1 * n'est pas utile, tout dépend ce que vous préférez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    SQL> with t as (
      2  select '+' as OPERATEUR, 6 as MONTANT from dual union all
      3  select '-' as OPERATEUR, 2 as MONTANT from dual union all
      4  select '+' as OPERATEUR, 4 as MONTANT from dual
      5  )
      6  select Sum( DECODE(OPERATEUR, '+', MONTANT, -1 * MONTANT) )
      7    from t;
     
    SUM(DECODE(OPERATEUR,'+',MONTANT,-1*MONTANT))
    ---------------------------------------------
                                                8
     
    SQL> with t as (
      2  select '+' as OPERATEUR, 6 as MONTANT from dual union all
      3  select '-' as OPERATEUR, 2 as MONTANT from dual union all
      4  select '+' as OPERATEUR, 4 as MONTANT from dual
      5  )
      6  select Sum( DECODE(OPERATEUR, '+', MONTANT, -MONTANT) )
      7    from t;
     
    SUM(DECODE(OPERATEUR,'+',MONTANT,-MONTANT))
    -------------------------------------------
                                              8
     
    SQL>

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Ok, merci bcp pour votre aide.

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

Discussions similaires

  1. [11g] Utilisation de la fonction DECODE
    Par shakapouet dans le forum SQL
    Réponses: 4
    Dernier message: 03/04/2014, 14h51
  2. Fonction decode, nouveau pb d'utilisation
    Par Thomas_ats dans le forum PL/SQL
    Réponses: 4
    Dernier message: 09/07/2008, 17h28
  3. Utilisation fonction decode
    Par Thomas_ats dans le forum SQL
    Réponses: 4
    Dernier message: 03/07/2008, 17h54
  4. [LG]librairies : utiliser seulement quelques fonctions
    Par wwwroom dans le forum Langage
    Réponses: 13
    Dernier message: 14/05/2004, 22h50

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