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

Langage SQL Discussion :

DECODE avec deux comparaisons


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 122
    Points : 54
    Points
    54
    Par défaut DECODE avec deux comparaisons
    Bonjour,

    Voici ma vue.

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    SELECT T4.CODE_DA                    CODE_DA
          ,T4.NO_TRX                          NO_TRX
          ,T4.NO_CLIEN                        NO_CLIEN
          ,T4.CODE_CLASS_CPTE_CLIEN  CODE_CLASS_CPTE_CLIEN
          ,T4.DATE_SAISI                     DATE_SAISI
          ,T4.HMS                               HMS
          ,T4.DATE_COMPT                   DATE_COMPT
          ,T4.CODE_TYPE_TRX              CODE_TYPE_TRX
          ,TYP_T4.DESCR_ABREG           DESCR_ABREG
          ,T4.NO_NOTE_DT_CT_ENCAI   CLE
          ,NDCE.TYPE_PAIEM                TYPE_PAIEM
          ,NDCE.TYPE_CARTE                TYP_CARTE
          ,DECODE(NDCE.NO_COMMA_COE, NULL, 
                       DECODE(NDCE.NO_PREIM,NULL, 'Gén: '||NDCE.
                                   NO_NOTE_DT_CT_ENCAI,NDCE.NO_PREIM)
          , TO_CHAR(NDCE.NO_COMMA_COE)) NUMERO
          ,DECODE (TYP_T4.CODE_NATUR_CPTE_CLIEN,'C',T4.MNT_TOT*-1
                                                    ,T4.MNT_TOT),
                                                    T4.SOLDE_CLIEN_APRES,
                                                    TYP_T4.CODE_NATUR_CPTE_CLIEN,
                                                    'REV92091',
                                                    'GLOBAL.REV92091_CODE_DA',
                                                    'GLOBAL.REV92091_NO_DT_CT_ENCA',
                                                    T4.AN_EXERC,
                                                    T4.CODE_PERIO,
                                                    T4.NO_UAR,
                                                    Null,
                                                    null,
                                                    NDCE.TYPE_CARTE,  TYPE_CARTE,
                                                    NDCE.NO_COMMA_COE,
                                                    T4.CODE_UTILI
    FROM   REV_TYPE_TRX TYP_T4,
              REV_NOTE_DT_CT_ENCAI NDCE,
              REV_TRX T4
    WHERE  T4.CODE_TYPE_TRX NOT IN ('TRDC', 'TRDA', 'TRAC', 'TRAA', 'REMC', 'REMA',
                                    'RADC', 'RADA', 'NDTC', 'NDTA', 'NCTC', 'NCTA',
                                    'FACC', 'FACA', 'ERTC', 'ERTA', 'ENCC', 'ENCA',
                                    'DEPC', 'DEPA', 'INTC')
      AND  TYP_T4.CODE_TYPE_TRX = T4.CODE_TYPE_TRX
      AND  NDCE.CODE_DA = T4.CODE_DA
      AND  NDCE.NO_NOTE_DT_CT_ENCAI = T4.NO_NOTE_DT_CT_ENCAI
    Dans la table TYP_T4.DESCR_ABREG il est inscrit ''PaieCarteCrédit'' si NDCE.TYPE_CARTE='T' et NDCE.TYPE_PAIEM='V'

    Je ne peux pas modifier la valeur dans la table...
    Mais je voudrais que dans la vue, si la valeur de NDCE.TYPE_CARTE='T et NDCE.TYPE_PAIEM='V' alors je voudrais forcer à inscrire 'PaieVirBancaire' dans TYP_T4.DESCR_ABREG au lieu de la valeur de la table qui serait 'PaieCarteCredit'

    Est-ce que quelqu'un a déjè utilisé un DECODE pour évaluer deux valeurs en même temps?

    Merci beaucoup!

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 109
    Points : 28 437
    Points
    28 437
    Par défaut
    Par définition, DECODE n'évalue qu'une condition à la fois.
    Tu peux en revanche, combiner plusieurs DECODE, comme c'est déjà fait pour ta colonne NUMERO, ou utiliser la syntaxe CASE WHEN qui est beaucoup plus souple.

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 122
    Points : 54
    Points
    54
    Par défaut Re
    la solution de CASE WHEN est excellente!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ,CASE WHEN NDCE.TYPE_PAIEM = 'V' and NDCE.TYPE_CARTE = 'C'
    AND t4.code_type_trx = 'COEC' THEN 'PaieVirBancaire'
    when NDCE.TYPE_PAIEM = 'V' and NDCE.TYPE_CARTE = 'C'
    AND t4.code_type_trx = 'COEA' then 'AnnPaieVirBanca' else DESCR_ABREG end DESCR_ABREG,...
    Merci beaucoup!!!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/11/2011, 15h44
  2. Réponses: 5
    Dernier message: 10/06/2009, 11h01
  3. Comparaison de valeur de ligne avec deux feuilles différentes
    Par charlix dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/07/2008, 15h54
  4. Réponses: 10
    Dernier message: 10/06/2004, 16h20
  5. [langage] split avec deux motifs (Newbie)
    Par Raumsog II dans le forum Langage
    Réponses: 2
    Dernier message: 07/06/2004, 09h31

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